root / tests / tcg / xtensa / test_mmu.S @ c09015dd
History | View | Annotate | Download (6 kB)
1 | 7d890b40 | Max Filippov | .include "macros.inc" |
---|---|---|---|
2 | 7d890b40 | Max Filippov | |
3 | 7d890b40 | Max Filippov | test_suite mmu |
4 | 7d890b40 | Max Filippov | |
5 | 7d890b40 | Max Filippov | .purgem test |
6 | 7d890b40 | Max Filippov | |
7 | 7d890b40 | Max Filippov | .macro test name |
8 | 7d890b40 | Max Filippov | movi a2, 0x00000004 |
9 | 7d890b40 | Max Filippov | idtlb a2 |
10 | 7d890b40 | Max Filippov | movi a2, 0x00100004 |
11 | 7d890b40 | Max Filippov | idtlb a2 |
12 | 7d890b40 | Max Filippov | movi a2, 0x00200004 |
13 | 7d890b40 | Max Filippov | idtlb a2 |
14 | 7d890b40 | Max Filippov | movi a2, 0x00300004 |
15 | 7d890b40 | Max Filippov | idtlb a2 |
16 | 7d890b40 | Max Filippov | movi a2, 0x00000007 |
17 | 7d890b40 | Max Filippov | idtlb a2 |
18 | 7d890b40 | Max Filippov | .endm |
19 | 7d890b40 | Max Filippov | |
20 | 7d890b40 | Max Filippov | test tlb_group |
21 | 7d890b40 | Max Filippov | movi a2, 0x04000002 /* PPN */ |
22 | 7d890b40 | Max Filippov | movi a3, 0x01200004 /* VPN */ |
23 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
24 | 7d890b40 | Max Filippov | witlb a2, a3 |
25 | 7d890b40 | Max Filippov | movi a3, 0x00200004 |
26 | 7d890b40 | Max Filippov | rdtlb0 a1, a3 |
27 | 7d890b40 | Max Filippov | ritlb0 a2, a3 |
28 | 7d890b40 | Max Filippov | movi a3, 0x01000001 |
29 | 7d890b40 | Max Filippov | assert eq, a1, a3 |
30 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
31 | 7d890b40 | Max Filippov | movi a3, 0x00200004 |
32 | 7d890b40 | Max Filippov | rdtlb1 a1, a3 |
33 | 7d890b40 | Max Filippov | ritlb1 a2, a3 |
34 | 7d890b40 | Max Filippov | movi a3, 0x04000002 |
35 | 7d890b40 | Max Filippov | assert eq, a1, a3 |
36 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
37 | 7d890b40 | Max Filippov | movi a3, 0x01234567 |
38 | 7d890b40 | Max Filippov | pdtlb a1, a3 |
39 | 7d890b40 | Max Filippov | pitlb a2, a3 |
40 | 7d890b40 | Max Filippov | movi a3, 0x01234014 |
41 | 7d890b40 | Max Filippov | assert eq, a1, a3 |
42 | 7d890b40 | Max Filippov | movi a3, 0x0123400c |
43 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
44 | 7d890b40 | Max Filippov | movi a3, 0x00200004 |
45 | 7d890b40 | Max Filippov | idtlb a3 |
46 | 7d890b40 | Max Filippov | iitlb a3 |
47 | 7d890b40 | Max Filippov | movi a3, 0x01234567 |
48 | 7d890b40 | Max Filippov | pdtlb a1, a3 |
49 | 7d890b40 | Max Filippov | pitlb a2, a3 |
50 | 7d890b40 | Max Filippov | movi a3, 0x00000010 |
51 | 7d890b40 | Max Filippov | and a1, a1, a3 |
52 | 7d890b40 | Max Filippov | assert eqi, a1, 0 |
53 | 7d890b40 | Max Filippov | movi a3, 0x00000008 |
54 | 7d890b40 | Max Filippov | and a2, a2, a3 |
55 | 7d890b40 | Max Filippov | assert eqi, a2, 0 |
56 | 7d890b40 | Max Filippov | test_end |
57 | 7d890b40 | Max Filippov | |
58 | 7d890b40 | Max Filippov | test itlb_miss |
59 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
60 | 7d890b40 | Max Filippov | |
61 | 7d890b40 | Max Filippov | movi a3, 0x00100000 |
62 | 7d890b40 | Max Filippov | jx a3 |
63 | 7d890b40 | Max Filippov | test_fail |
64 | 7d890b40 | Max Filippov | 1: |
65 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
66 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
67 | 7d890b40 | Max Filippov | rsr a2, exccause |
68 | 7d890b40 | Max Filippov | movi a3, 16 |
69 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
70 | 7d890b40 | Max Filippov | test_end |
71 | 7d890b40 | Max Filippov | |
72 | 7d890b40 | Max Filippov | test dtlb_miss |
73 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
74 | 7d890b40 | Max Filippov | |
75 | 7d890b40 | Max Filippov | movi a3, 0x00100000 |
76 | 7d890b40 | Max Filippov | l8ui a2, a3, 0 |
77 | 7d890b40 | Max Filippov | test_fail |
78 | 7d890b40 | Max Filippov | 1: |
79 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
80 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
81 | 7d890b40 | Max Filippov | rsr a2, exccause |
82 | 7d890b40 | Max Filippov | movi a3, 24 |
83 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
84 | 7d890b40 | Max Filippov | test_end |
85 | 7d890b40 | Max Filippov | |
86 | 7d890b40 | Max Filippov | test itlb_multi_hit |
87 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
88 | 7d890b40 | Max Filippov | |
89 | 7d890b40 | Max Filippov | movi a2, 0x04000002 /* PPN */ |
90 | 7d890b40 | Max Filippov | movi a3, 0xf0000004 /* VPN */ |
91 | 7d890b40 | Max Filippov | witlb a2, a3 |
92 | 7d890b40 | Max Filippov | movi a3, 0xf0000000 |
93 | 7d890b40 | Max Filippov | pitlb a2, a3 |
94 | 7d890b40 | Max Filippov | test_fail |
95 | 7d890b40 | Max Filippov | 1: |
96 | 7d890b40 | Max Filippov | rsr a2, exccause |
97 | 7d890b40 | Max Filippov | movi a3, 17 |
98 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
99 | 7d890b40 | Max Filippov | test_end |
100 | 7d890b40 | Max Filippov | |
101 | 7d890b40 | Max Filippov | test dtlb_multi_hit |
102 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
103 | 7d890b40 | Max Filippov | |
104 | 7d890b40 | Max Filippov | movi a2, 0x04000002 /* PPN */ |
105 | 7d890b40 | Max Filippov | movi a3, 0x01200004 /* VPN */ |
106 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
107 | 7d890b40 | Max Filippov | movi a3, 0x01200007 /* VPN */ |
108 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
109 | 7d890b40 | Max Filippov | movi a3, 0x01200000 |
110 | 7d890b40 | Max Filippov | pdtlb a2, a3 |
111 | 7d890b40 | Max Filippov | test_fail |
112 | 7d890b40 | Max Filippov | 1: |
113 | 7d890b40 | Max Filippov | rsr a2, exccause |
114 | 7d890b40 | Max Filippov | movi a3, 25 |
115 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
116 | 7d890b40 | Max Filippov | test_end |
117 | 7d890b40 | Max Filippov | |
118 | 7d890b40 | Max Filippov | test inst_fetch_privilege |
119 | 7d890b40 | Max Filippov | set_vector kernel, 3f |
120 | 7d890b40 | Max Filippov | |
121 | 7d890b40 | Max Filippov | movi a2, 0x4004f |
122 | 7d890b40 | Max Filippov | wsr a2, ps |
123 | 7d890b40 | Max Filippov | 1: |
124 | 7d890b40 | Max Filippov | isync |
125 | 7d890b40 | Max Filippov | nop |
126 | 7d890b40 | Max Filippov | 2: |
127 | 7d890b40 | Max Filippov | test_fail |
128 | 7d890b40 | Max Filippov | 3: |
129 | 7d890b40 | Max Filippov | movi a1, 1b |
130 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
131 | 7d890b40 | Max Filippov | rsr a3, epc1 |
132 | 7d890b40 | Max Filippov | assert ge, a2, a1 |
133 | 7d890b40 | Max Filippov | assert ge, a3, a1 |
134 | 7d890b40 | Max Filippov | movi a1, 2b |
135 | 7d890b40 | Max Filippov | assert lt, a2, a1 |
136 | 7d890b40 | Max Filippov | assert lt, a3, a1 |
137 | 7d890b40 | Max Filippov | rsr a2, exccause |
138 | 7d890b40 | Max Filippov | movi a3, 18 |
139 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
140 | 7d890b40 | Max Filippov | rsr a2, ps |
141 | 7d890b40 | Max Filippov | movi a3, 0x4005f |
142 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
143 | 7d890b40 | Max Filippov | test_end |
144 | 7d890b40 | Max Filippov | |
145 | 7d890b40 | Max Filippov | test load_store_privilege |
146 | 7d890b40 | Max Filippov | set_vector kernel, 2f |
147 | 7d890b40 | Max Filippov | |
148 | 7d890b40 | Max Filippov | movi a3, 10f |
149 | 7d890b40 | Max Filippov | pitlb a3, a3 |
150 | 7d890b40 | Max Filippov | ritlb1 a2, a3 |
151 | 7d890b40 | Max Filippov | movi a1, 0x10 |
152 | 7d890b40 | Max Filippov | or a2, a2, a1 |
153 | 7d890b40 | Max Filippov | movi a1, 0x000ff000 |
154 | 7d890b40 | Max Filippov | and a3, a3, a1 |
155 | 7d890b40 | Max Filippov | movi a1, 4 |
156 | 7d890b40 | Max Filippov | or a3, a3, a1 |
157 | 7d890b40 | Max Filippov | witlb a2, a3 |
158 | 7d890b40 | Max Filippov | movi a3, 10f |
159 | 7d890b40 | Max Filippov | movi a1, 0x000fffff |
160 | 7d890b40 | Max Filippov | and a1, a3, a1 |
161 | 7d890b40 | Max Filippov | |
162 | 7d890b40 | Max Filippov | movi a2, 0x04000003 /* PPN */ |
163 | 7d890b40 | Max Filippov | movi a3, 0x01200004 /* VPN */ |
164 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
165 | 7d890b40 | Max Filippov | movi a3, 0x01200001 |
166 | 7d890b40 | Max Filippov | movi a2, 0x4004f |
167 | 7d890b40 | Max Filippov | jx a1 |
168 | 7d890b40 | Max Filippov | 10: |
169 | 7d890b40 | Max Filippov | wsr a2, ps |
170 | 7d890b40 | Max Filippov | isync |
171 | 7d890b40 | Max Filippov | 1: |
172 | 7d890b40 | Max Filippov | l8ui a2, a3, 0 |
173 | 7d890b40 | Max Filippov | test_fail |
174 | 7d890b40 | Max Filippov | 2: |
175 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
176 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
177 | 7d890b40 | Max Filippov | rsr a2, epc1 |
178 | 7d890b40 | Max Filippov | movi a3, 1b |
179 | 7d890b40 | Max Filippov | movi a1, 0x000fffff |
180 | 7d890b40 | Max Filippov | and a3, a3, a1 |
181 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
182 | 7d890b40 | Max Filippov | rsr a2, exccause |
183 | 7d890b40 | Max Filippov | movi a3, 26 |
184 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
185 | 7d890b40 | Max Filippov | rsr a2, ps |
186 | 7d890b40 | Max Filippov | movi a3, 0x4005f |
187 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
188 | 7d890b40 | Max Filippov | test_end |
189 | 7d890b40 | Max Filippov | |
190 | 7d890b40 | Max Filippov | test cring_load_store_privilege |
191 | 7d890b40 | Max Filippov | set_vector kernel, 0 |
192 | 7d890b40 | Max Filippov | set_vector double, 2f |
193 | 7d890b40 | Max Filippov | |
194 | 7d890b40 | Max Filippov | movi a2, 0x04000003 /* PPN */ |
195 | 7d890b40 | Max Filippov | movi a3, 0x01200004 /* VPN */ |
196 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
197 | 7d890b40 | Max Filippov | movi a3, 0x01200004 |
198 | 7d890b40 | Max Filippov | movi a2, 0x4005f /* ring 1 + excm => cring == 0 */ |
199 | 7d890b40 | Max Filippov | wsr a2, ps |
200 | 7d890b40 | Max Filippov | isync |
201 | 7d890b40 | Max Filippov | l8ui a2, a3, 0 /* cring used */ |
202 | 7d890b40 | Max Filippov | 1: |
203 | 7d890b40 | Max Filippov | l32e a2, a3, -4 /* ring used */ |
204 | 7d890b40 | Max Filippov | test_fail |
205 | 7d890b40 | Max Filippov | 2: |
206 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
207 | 7d890b40 | Max Filippov | addi a2, a2, 4 |
208 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
209 | 7d890b40 | Max Filippov | rsr a2, depc |
210 | 7d890b40 | Max Filippov | movi a3, 1b |
211 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
212 | 7d890b40 | Max Filippov | rsr a2, exccause |
213 | 7d890b40 | Max Filippov | movi a3, 26 |
214 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
215 | 7d890b40 | Max Filippov | rsr a2, ps |
216 | 7d890b40 | Max Filippov | movi a3, 0x4005f |
217 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
218 | 7d890b40 | Max Filippov | test_end |
219 | 7d890b40 | Max Filippov | |
220 | 7d890b40 | Max Filippov | test inst_fetch_prohibited |
221 | 7d890b40 | Max Filippov | set_vector kernel, 2f |
222 | 7d890b40 | Max Filippov | |
223 | 7d890b40 | Max Filippov | movi a3, 10f |
224 | 7d890b40 | Max Filippov | pitlb a3, a3 |
225 | 7d890b40 | Max Filippov | ritlb1 a2, a3 |
226 | 7d890b40 | Max Filippov | movi a1, 0xfffff000 |
227 | 7d890b40 | Max Filippov | and a2, a2, a1 |
228 | 7d890b40 | Max Filippov | movi a1, 0x4 |
229 | 7d890b40 | Max Filippov | or a2, a2, a1 |
230 | 7d890b40 | Max Filippov | movi a1, 0x000ff000 |
231 | 7d890b40 | Max Filippov | and a3, a3, a1 |
232 | 7d890b40 | Max Filippov | movi a1, 4 |
233 | 7d890b40 | Max Filippov | or a3, a3, a1 |
234 | 7d890b40 | Max Filippov | witlb a2, a3 |
235 | 7d890b40 | Max Filippov | movi a3, 10f |
236 | 7d890b40 | Max Filippov | movi a1, 0x000fffff |
237 | 7d890b40 | Max Filippov | and a1, a3, a1 |
238 | 7d890b40 | Max Filippov | jx a1 |
239 | 7d890b40 | Max Filippov | .align 4 |
240 | 7d890b40 | Max Filippov | 10: |
241 | 7d890b40 | Max Filippov | nop |
242 | 7d890b40 | Max Filippov | test_fail |
243 | 7d890b40 | Max Filippov | 2: |
244 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
245 | 7d890b40 | Max Filippov | assert eq, a2, a1 |
246 | 7d890b40 | Max Filippov | rsr a2, epc1 |
247 | 7d890b40 | Max Filippov | assert eq, a2, a1 |
248 | 7d890b40 | Max Filippov | rsr a2, exccause |
249 | 7d890b40 | Max Filippov | movi a3, 20 |
250 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
251 | 7d890b40 | Max Filippov | test_end |
252 | 7d890b40 | Max Filippov | |
253 | 7d890b40 | Max Filippov | test load_prohibited |
254 | 7d890b40 | Max Filippov | set_vector kernel, 2f |
255 | 7d890b40 | Max Filippov | |
256 | 7d890b40 | Max Filippov | movi a2, 0x0400000c /* PPN */ |
257 | 7d890b40 | Max Filippov | movi a3, 0x01200004 /* VPN */ |
258 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
259 | 7d890b40 | Max Filippov | movi a3, 0x01200002 |
260 | 7d890b40 | Max Filippov | 1: |
261 | 7d890b40 | Max Filippov | l8ui a2, a3, 0 |
262 | 7d890b40 | Max Filippov | test_fail |
263 | 7d890b40 | Max Filippov | 2: |
264 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
265 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
266 | 7d890b40 | Max Filippov | rsr a2, epc1 |
267 | 7d890b40 | Max Filippov | movi a3, 1b |
268 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
269 | 7d890b40 | Max Filippov | rsr a2, exccause |
270 | 7d890b40 | Max Filippov | movi a3, 28 |
271 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
272 | 7d890b40 | Max Filippov | test_end |
273 | 7d890b40 | Max Filippov | |
274 | 7d890b40 | Max Filippov | test store_prohibited |
275 | 7d890b40 | Max Filippov | set_vector kernel, 2f |
276 | 7d890b40 | Max Filippov | |
277 | 7d890b40 | Max Filippov | movi a2, 0x04000001 /* PPN */ |
278 | 7d890b40 | Max Filippov | movi a3, 0x01200004 /* VPN */ |
279 | 7d890b40 | Max Filippov | wdtlb a2, a3 |
280 | 7d890b40 | Max Filippov | movi a3, 0x01200003 |
281 | 7d890b40 | Max Filippov | l8ui a2, a3, 0 |
282 | 7d890b40 | Max Filippov | 1: |
283 | 7d890b40 | Max Filippov | s8i a2, a3, 0 |
284 | 7d890b40 | Max Filippov | test_fail |
285 | 7d890b40 | Max Filippov | 2: |
286 | 7d890b40 | Max Filippov | rsr a2, excvaddr |
287 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
288 | 7d890b40 | Max Filippov | rsr a2, epc1 |
289 | 7d890b40 | Max Filippov | movi a3, 1b |
290 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
291 | 7d890b40 | Max Filippov | rsr a2, exccause |
292 | 7d890b40 | Max Filippov | movi a3, 29 |
293 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
294 | 7d890b40 | Max Filippov | test_end |
295 | 7d890b40 | Max Filippov | |
296 | 7d890b40 | Max Filippov | test dtlb_autoload |
297 | 7d890b40 | Max Filippov | set_vector kernel, 0 |
298 | 7d890b40 | Max Filippov | |
299 | 7d890b40 | Max Filippov | movi a2, 0xd4000000 |
300 | 7d890b40 | Max Filippov | wsr a2, ptevaddr |
301 | 7d890b40 | Max Filippov | movi a3, 0x00001013 |
302 | 7d890b40 | Max Filippov | s32i a3, a2, 4 |
303 | 7d890b40 | Max Filippov | pdtlb a2, a3 |
304 | 7d890b40 | Max Filippov | movi a1, 0x10 |
305 | 7d890b40 | Max Filippov | and a1, a1, a2 |
306 | 7d890b40 | Max Filippov | assert eqi, a1, 0 |
307 | 7d890b40 | Max Filippov | l8ui a1, a3, 0 |
308 | 7d890b40 | Max Filippov | pdtlb a2, a3 |
309 | 7d890b40 | Max Filippov | movi a1, 0xfffff010 |
310 | 7d890b40 | Max Filippov | and a1, a1, a2 |
311 | 7d890b40 | Max Filippov | movi a3, 0x00001010 |
312 | 7d890b40 | Max Filippov | assert eq, a1, a3 |
313 | 7d890b40 | Max Filippov | movi a1, 0xf |
314 | 7d890b40 | Max Filippov | and a1, a1, a2 |
315 | 7d890b40 | Max Filippov | assert lti, a1, 4 |
316 | 7d890b40 | Max Filippov | test_end |
317 | 7d890b40 | Max Filippov | |
318 | 7d890b40 | Max Filippov | test_suite_end |