]> git.proxmox.com Git - mirror_qemu.git/blame - tests/tcg/xtensa/test_break.S
Merge remote-tracking branch 'remotes/otubo/tags/pull-seccomp-20141111' into staging
[mirror_qemu.git] / tests / tcg / xtensa / test_break.S
CommitLineData
a2e67072 1#include "macros.inc"
e7dfa64d
MF
2
3#define debug_level 6
4#define debug_vector level6
5
6test_suite break
7
8test break
9 set_vector debug_vector, 0
10 rsil a2, debug_level
11 _break 0, 0
12
13 set_vector debug_vector, 2f
14 rsil a2, debug_level - 1
151:
16 _break 0, 0
17 test_fail
182:
19 rsr a2, ps
20 movi a3, 0x1f
21 and a2, a2, a3
22 movi a3, 0x10 | debug_level
23 assert eq, a2, a3
24 rsr a2, epc6
25 movi a3, 1b
26 assert eq, a2, a3
27 rsr a2, debugcause
28 movi a3, 0x8
29 assert eq, a2, a3
30test_end
31
32test breakn
33 set_vector debug_vector, 0
34 rsil a2, debug_level
35 _break.n 0
36
37 set_vector debug_vector, 2f
38 rsil a2, debug_level - 1
391:
40 _break.n 0
41 test_fail
422:
43 rsr a2, ps
44 movi a3, 0x1f
45 and a2, a2, a3
46 movi a3, 0x10 | debug_level
47 assert eq, a2, a3
48 rsr a2, epc6
49 movi a3, 1b
50 assert eq, a2, a3
51 rsr a2, debugcause
52 movi a3, 0x10
53 assert eq, a2, a3
54test_end
55
56test ibreak
57 set_vector debug_vector, 0
58 rsil a2, debug_level
59 movi a2, 1f
60 wsr a2, ibreaka0
61 movi a2, 1
62 wsr a2, ibreakenable
63 isync
641:
65 rsil a2, debug_level - 1
66 movi a2, 1f
67 wsr a2, ibreaka0
68 movi a2, 0
69 wsr a2, ibreakenable
70 isync
711:
72 set_vector debug_vector, 2f
73 movi a2, 1f
74 wsr a2, ibreaka0
75 movi a2, 1
76 wsr a2, ibreakenable
77 isync
781:
79 test_fail
802:
81 rsr a2, ps
82 movi a3, 0x1f
83 and a2, a2, a3
84 movi a3, 0x10 | debug_level
85 assert eq, a2, a3
86 rsr a2, epc6
87 movi a3, 1b
88 assert eq, a2, a3
89 rsr a2, debugcause
90 movi a3, 0x2
91 assert eq, a2, a3
92test_end
93
ad4ccc93
MF
94test ibreak_remove
95 set_vector debug_vector, 3f
96 rsil a2, debug_level - 1
97 movi a2, 2f
98 wsr a2, ibreaka0
99 movi a3, 1
1001:
101 wsr a3, ibreakenable
102 isync
1032:
104 beqz a3, 4f
105 test_fail
1063:
107 assert eqi, a3, 1
108 rsr a2, ps
109 movi a3, 0x1f
110 and a2, a2, a3
111 movi a3, 0x10 | debug_level
112 assert eq, a2, a3
113 rsr a2, epc6
114 movi a3, 2b
115 assert eq, a2, a3
116 rsr a2, debugcause
117 movi a3, 0x2
118 assert eq, a2, a3
119
120 movi a2, 0x40000
121 wsr a2, ps
122 isync
123 movi a3, 0
124 j 1b
1254:
126test_end
127
e7dfa64d
MF
128test ibreak_priority
129 set_vector debug_vector, 2f
130 rsil a2, debug_level - 1
131 movi a2, 1f
132 wsr a2, ibreaka0
133 movi a2, 1
134 wsr a2, ibreakenable
135 isync
1361:
137 break 0, 0
138 test_fail
1392:
140 rsr a2, debugcause
141 movi a3, 0x2
142 assert eq, a2, a3
143test_end
144
145test icount
146 set_vector debug_vector, 2f
147 rsil a2, debug_level - 1
148 movi a2, -2
149 wsr a2, icount
150 movi a2, 1
151 wsr a2, icountlevel
152 isync
153 rsil a2, 0
154 nop
1551:
156 break 0, 0
157 test_fail
1582:
159 movi a2, 0
160 wsr a2, icountlevel
161 rsr a2, epc6
162 movi a3, 1b
163 assert eq, a2, a3
164 rsr a2, debugcause
165 movi a3, 0x1
166 assert eq, a2, a3
167test_end
168
169.macro check_dbreak dr
170 rsr a2, epc6
171 movi a3, 1b
172 assert eq, a2, a3
173 rsr a2, debugcause
174 movi a3, 0x4 | (\dr << 8)
175 assert eq, a2, a3
176 movi a2, 0
177 wsr a2, dbreakc\dr
178.endm
179
180.macro dbreak_test dr, ctl, break, access, op
181 set_vector debug_vector, 2f
182 rsil a2, debug_level - 1
183 movi a2, \ctl
184 wsr a2, dbreakc\dr
185 movi a2, \break
186 wsr a2, dbreaka\dr
187 movi a2, \access
188 isync
1891:
190 \op a3, a2, 0
191 test_fail
1922:
193 check_dbreak \dr
194 reset_ps
195.endm
196
197test dbreak_exact
198 dbreak_test 0, 0x4000003f, 0xd000007f, 0xd000007f, l8ui
199 dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007e, l16ui
200 dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007c, l32i
201
202 dbreak_test 1, 0x8000003f, 0xd000007f, 0xd000007f, s8i
203 dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007e, s16i
204 dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s32i
205test_end
206
207test dbreak_overlap
208 dbreak_test 0, 0x4000003f, 0xd000007d, 0xd000007c, l16ui
209 dbreak_test 1, 0x4000003f, 0xd000007d, 0xd000007c, l32i
210
211 dbreak_test 0, 0x4000003e, 0xd000007e, 0xd000007f, l8ui
212 dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007c, l32i
213
214 dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007d, l8ui
215 dbreak_test 1, 0x4000003c, 0xd000007c, 0xd000007c, l16ui
216
217 dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007b, l8ui
218 dbreak_test 1, 0x40000038, 0xd0000078, 0xd000007a, l16ui
219 dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007c, l32i
220
221 dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000075, l8ui
222 dbreak_test 0, 0x40000030, 0xd0000070, 0xd0000076, l16ui
223 dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000078, l32i
224
225 dbreak_test 0, 0x40000020, 0xd0000060, 0xd000006f, l8ui
226 dbreak_test 1, 0x40000020, 0xd0000060, 0xd0000070, l16ui
227 dbreak_test 0, 0x40000020, 0xd0000060, 0xd0000074, l32i
228
229
230 dbreak_test 0, 0x8000003f, 0xd000007d, 0xd000007c, s16i
231 dbreak_test 1, 0x8000003f, 0xd000007d, 0xd000007c, s32i
232
233 dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007f, s8i
234 dbreak_test 1, 0x8000003e, 0xd000007e, 0xd000007c, s32i
235
236 dbreak_test 0, 0x8000003c, 0xd000007c, 0xd000007d, s8i
237 dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s16i
238
239 dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007b, s8i
240 dbreak_test 1, 0x80000038, 0xd0000078, 0xd000007a, s16i
241 dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007c, s32i
242
243 dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000075, s8i
244 dbreak_test 0, 0x80000030, 0xd0000070, 0xd0000076, s16i
245 dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000078, s32i
246
247 dbreak_test 0, 0x80000020, 0xd0000060, 0xd000006f, s8i
248 dbreak_test 1, 0x80000020, 0xd0000060, 0xd0000070, s16i
249 dbreak_test 0, 0x80000020, 0xd0000060, 0xd0000074, s32i
250test_end
251
252test dbreak_invalid
253 dbreak_test 0, 0x40000030, 0xd0000071, 0xd0000070, l16ui
254 dbreak_test 1, 0x40000035, 0xd0000072, 0xd0000070, l32i
255test_end
256
257test_suite_end