1 #ifndef _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
2 #define _ENV_PHYSICAL_SINGLE_CORE_TIMER_H
6 //-----------------------------------------------------------------------
8 //-----------------------------------------------------------------------
10 #define RVTEST_RV64U \
12 #define RVTEST_FP_ENABLE \
20 #define RVTEST_PASS_NOFP \
26 #define RVTEST_VEC_ENABLE \
33 #define RVTEST_CODE_BEGIN \
40 mfpcr a0, cr10; 1: bnez a0, 1b; \
41 ENABLE_TIMER_INTERRUPT \
43 //-----------------------------------------------------------------------
45 //-----------------------------------------------------------------------
47 #define RVTEST_CODE_END \
50 //-----------------------------------------------------------------------
52 //-----------------------------------------------------------------------
68 //-----------------------------------------------------------------------
70 //-----------------------------------------------------------------------
72 #define RVTEST_DATA_BEGIN \
75 .dword 0xdeadbeefcafebabe; \
76 .dword 0xdeadbeefcafebabe; \
77 .dword 0xdeadbeefcafebabe; \
78 .dword 0xdeadbeefcafebabe; \
79 .dword 0xdeadbeefcafebabe; \
80 .dword 0xdeadbeefcafebabe; \
81 .dword 0xdeadbeefcafebabe; \
82 .dword 0xdeadbeefcafebabe; \
83 .dword 0xdeadbeefcafebabe; \
84 .dword 0xdeadbeefcafebabe; \
85 .dword 0xdeadbeefcafebabe; \
86 .dword 0xdeadbeefcafebabe; \
87 .dword 0xdeadbeefcafebabe; \
88 .dword 0xdeadbeefcafebabe; \
89 .dword 0xdeadbeefcafebabe; \
90 .dword 0xdeadbeefcafebabe; \
91 .dword 0xdeadbeefcafebabe; \
92 .dword 0xdeadbeefcafebabe; \
93 .dword 0xdeadbeefcafebabe; \
94 .dword 0xdeadbeefcafebabe; \
95 .dword 0xdeadbeefcafebabe; \
96 .dword 0xdeadbeefcafebabe; \
97 .dword 0xdeadbeefcafebabe; \
98 .dword 0xdeadbeefcafebabe; \
100 .dword 0xdeadbeefcafebabe; \
101 .dword 0xdeadbeefcafebabe; \
102 .dword 0xdeadbeefcafebabe; \
103 .dword 0xdeadbeefcafebabe; \
104 .dword 0xdeadbeefcafebabe; \
105 .dword 0xdeadbeefcafebabe; \
106 .dword 0xdeadbeefcafebabe; \
107 .dword 0xdeadbeefcafebabe; \
108 .dword 0xdeadbeefcafebabe; \
109 .dword 0xdeadbeefcafebabe; \
110 .dword 0xdeadbeefcafebabe; \
111 .dword 0xdeadbeefcafebabe; \
112 .dword 0xdeadbeefcafebabe; \
113 .dword 0xdeadbeefcafebabe; \
114 .dword 0xdeadbeefcafebabe; \
115 .dword 0xdeadbeefcafebabe; \
116 .dword 0xdeadbeefcafebabe; \
117 .dword 0xdeadbeefcafebabe; \
118 .dword 0xdeadbeefcafebabe; \
119 .dword 0xdeadbeefcafebabe; \
120 .dword 0xdeadbeefcafebabe; \
121 .dword 0xdeadbeefcafebabe; \
122 .dword 0xdeadbeefcafebabe; \
123 .dword 0xdeadbeefcafebabe; \
124 .dword 0xdeadbeefcafebabe; \
125 .dword 0xdeadbeefcafebabe; \
126 .dword 0xdeadbeefcafebabe; \
127 .dword 0xdeadbeefcafebabe; \
128 .dword 0xdeadbeefcafebabe; \
129 .dword 0xdeadbeefcafebabe; \
130 .dword 0xdeadbeefcafebabe; \
131 .dword 0xdeadbeefcafebabe; \
133 #define RVTEST_DATA_END
135 //#define RVTEST_DATA_BEGIN .align 4; .global begin_signature; begin_signature:
136 //#define RVTEST_DATA_END .align 4; .global end_signature; end_signature:
138 //-----------------------------------------------------------------------
140 //-----------------------------------------------------------------------
142 #define ENABLE_TIMER_INTERRUPT \
143 mtpcr x0,ASM_CR(PCR_CLR_IPI);\
144 mfpcr a0,ASM_CR(PCR_SR); \
145 li a1, SR_ET|SR_IM; \
147 mtpcr a0,ASM_CR(PCR_SR); \
149 mtpcr a0,ASM_CR(PCR_EVEC); \
150 mtpcr x0,ASM_CR(PCR_COUNT); \
152 mtpcr a0,ASM_CR(PCR_COMPARE);\
154 #define XCPT_HANDLER \
156 mtpcr a0,ASM_CR(PCR_K0); \
157 mtpcr a1,ASM_CR(PCR_K1); \
165 mfpcr s1,ASM_CR(PCR_VECBANK);\
166 mfpcr s0,ASM_CR(PCR_VECCFG); \
169 mtpcr s1,ASM_CR(PCR_VECBANK);\
188 beq a5,x0,vcmd_skip; \
219 beq a5,x0,done_skip; \
229 mfpcr a0,ASM_CR(PCR_COUNT); \
231 mtpcr a0,ASM_CR(PCR_COMPARE);\
232 mfpcr a0,ASM_CR(PCR_K0); \
233 mfpcr a1,ASM_CR(PCR_K1); \