Statistics
| Branch: | Revision:

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