target/mips: Extract MXU code to new mxu_translate.c file
[qemu/ar7.git] / tests / tcg / xtensa / test_break.S
blob3379a3f9f06e0014cc557cc157af3bc30258d060
1 #include "macros.inc"
3 test_suite break
5 #if XCHAL_HAVE_DEBUG
7 #define debug_level XCHAL_DEBUGLEVEL
8 #define debug_vector glue(level, XCHAL_DEBUGLEVEL)
9 #define EPC_DEBUG glue(epc, XCHAL_DEBUGLEVEL)
11 test break
12     set_vector debug_vector, 0
13     rsil    a2, debug_level
14     _break  0, 0
16     set_vector debug_vector, 2f
17     rsil    a2, debug_level - 1
19     _break  0, 0
20     test_fail
22     rsr     a2, ps
23     movi    a3, 0x1f
24     and     a2, a2, a3
25     movi    a3, 0x10 | debug_level
26     assert  eq, a2, a3
27     rsr     a2, EPC_DEBUG
28     movi    a3, 1b
29     assert  eq, a2, a3
30     rsr     a2, debugcause
31     movi    a3, 0x8
32     assert  eq, a2, a3
33 test_end
35 test breakn
36     set_vector debug_vector, 0
37     rsil    a2, debug_level
38     _break.n  0
40     set_vector debug_vector, 2f
41     rsil    a2, debug_level - 1
43     _break.n  0
44     test_fail
46     rsr     a2, ps
47     movi    a3, 0x1f
48     and     a2, a2, a3
49     movi    a3, 0x10 | debug_level
50     assert  eq, a2, a3
51     rsr     a2, EPC_DEBUG
52     movi    a3, 1b
53     assert  eq, a2, a3
54     rsr     a2, debugcause
55     movi    a3, 0x10
56     assert  eq, a2, a3
57 test_end
59 #if XCHAL_NUM_IBREAK
60 test ibreak
61     set_vector debug_vector, 0
62     rsil    a2, debug_level
63     movi    a2, 1f
64     wsr     a2, ibreaka0
65     movi    a2, 1
66     wsr     a2, ibreakenable
67     isync
69     rsil    a2, debug_level - 1
70     movi    a2, 1f
71     wsr     a2, ibreaka0
72     movi    a2, 0
73     wsr     a2, ibreakenable
74     isync
76     set_vector debug_vector, 2f
77     movi    a2, 1f
78     wsr     a2, ibreaka0
79     movi    a2, 1
80     wsr     a2, ibreakenable
81     isync
83     test_fail
85     rsr     a2, ps
86     movi    a3, 0x1f
87     and     a2, a2, a3
88     movi    a3, 0x10 | debug_level
89     assert  eq, a2, a3
90     rsr     a2, EPC_DEBUG
91     movi    a3, 1b
92     assert  eq, a2, a3
93     rsr     a2, debugcause
94     movi    a3, 0x2
95     assert  eq, a2, a3
96 test_end
98 test ibreak_remove
99     set_vector debug_vector, 3f
100     rsil    a2, debug_level - 1
101     movi    a2, 2f
102     wsr     a2, ibreaka0
103     movi    a3, 1
105     wsr     a3, ibreakenable
106     isync
108     beqz    a3, 4f
109     test_fail
111     assert  eqi, a3, 1
112     rsr     a2, ps
113     movi    a3, 0x1f
114     and     a2, a2, a3
115     movi    a3, 0x10 | debug_level
116     assert  eq, a2, a3
117     rsr     a2, EPC_DEBUG
118     movi    a3, 2b
119     assert  eq, a2, a3
120     rsr     a2, debugcause
121     movi    a3, 0x2
122     assert  eq, a2, a3
124     movi    a2, 0x40000
125     wsr     a2, ps
126     isync
127     movi    a3, 0
128     j       1b
130 test_end
132 test ibreak_priority
133     set_vector debug_vector, 2f
134     rsil    a2, debug_level - 1
135     movi    a2, 1f
136     wsr     a2, ibreaka0
137     movi    a2, 1
138     wsr     a2, ibreakenable
139     isync
141     break   0, 0
142     test_fail
144     rsr     a2, debugcause
145     movi    a3, 0x2
146     assert  eq, a2, a3
147 test_end
148 #endif
150 test icount
151     set_vector debug_vector, 2f
152     rsil    a2, debug_level - 1
153     movi    a2, -2
154     wsr     a2, icount
155     movi    a2, 1
156     wsr     a2, icountlevel
157     isync
158     rsil    a2, 0
159     nop
161     break   0, 0
162     test_fail
164     movi    a2, 0
165     wsr     a2, icountlevel
166     rsr     a2, EPC_DEBUG
167     movi    a3, 1b
168     assert  eq, a2, a3
169     rsr     a2, debugcause
170     movi    a3, 0x1
171     assert  eq, a2, a3
172 test_end
174 .macro check_dbreak dr
175     rsr     a2, EPC_DEBUG
176     movi    a3, 1b
177     assert  eq, a2, a3
178     rsr     a2, debugcause
179     movi    a3, 0x4 | (\dr << 8)
180     assert  eq, a2, a3
181     movi    a2, 0
182     wsr     a2, dbreakc\dr
183 .endm
185 .macro dbreak_test dr, ctl, break, access, op
186     set_vector debug_vector, 2f
187     rsil    a2, debug_level - 1
188     movi    a2, \ctl
189     wsr     a2, dbreakc\dr
190     movi    a2, \break
191     wsr     a2, dbreaka\dr
192     movi    a2, \access
193     isync
195     \op     a3, a2, 0
196     test_fail
198     check_dbreak \dr
199     reset_ps
200 .endm
202 #if XCHAL_NUM_DBREAK
203 test dbreak_exact
204     dbreak_test 0, 0x4000003f, 0xd000007f, 0xd000007f, l8ui
205     dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007e, l16ui
206     dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007c, l32i
208     dbreak_test 1, 0x8000003f, 0xd000007f, 0xd000007f, s8i
209     dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007e, s16i
210     dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s32i
211 test_end
213 test dbreak_overlap
214     dbreak_test 0, 0x4000003f, 0xd000007d, 0xd000007c, l16ui
215     dbreak_test 1, 0x4000003f, 0xd000007d, 0xd000007c, l32i
217     dbreak_test 0, 0x4000003e, 0xd000007e, 0xd000007f, l8ui
218     dbreak_test 1, 0x4000003e, 0xd000007e, 0xd000007c, l32i
220     dbreak_test 0, 0x4000003c, 0xd000007c, 0xd000007d, l8ui
221     dbreak_test 1, 0x4000003c, 0xd000007c, 0xd000007c, l16ui
223     dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007b, l8ui
224     dbreak_test 1, 0x40000038, 0xd0000078, 0xd000007a, l16ui
225     dbreak_test 0, 0x40000038, 0xd0000078, 0xd000007c, l32i
227     dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000075, l8ui
228     dbreak_test 0, 0x40000030, 0xd0000070, 0xd0000076, l16ui
229     dbreak_test 1, 0x40000030, 0xd0000070, 0xd0000078, l32i
231     dbreak_test 0, 0x40000020, 0xd0000060, 0xd000006f, l8ui
232     dbreak_test 1, 0x40000020, 0xd0000060, 0xd0000070, l16ui
233     dbreak_test 0, 0x40000020, 0xd0000060, 0xd0000074, l32i
236     dbreak_test 0, 0x8000003f, 0xd000007d, 0xd000007c, s16i
237     dbreak_test 1, 0x8000003f, 0xd000007d, 0xd000007c, s32i
239     dbreak_test 0, 0x8000003e, 0xd000007e, 0xd000007f, s8i
240     dbreak_test 1, 0x8000003e, 0xd000007e, 0xd000007c, s32i
242     dbreak_test 0, 0x8000003c, 0xd000007c, 0xd000007d, s8i
243     dbreak_test 1, 0x8000003c, 0xd000007c, 0xd000007c, s16i
245     dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007b, s8i
246     dbreak_test 1, 0x80000038, 0xd0000078, 0xd000007a, s16i
247     dbreak_test 0, 0x80000038, 0xd0000078, 0xd000007c, s32i
249     dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000075, s8i
250     dbreak_test 0, 0x80000030, 0xd0000070, 0xd0000076, s16i
251     dbreak_test 1, 0x80000030, 0xd0000070, 0xd0000078, s32i
253     dbreak_test 0, 0x80000020, 0xd0000060, 0xd000006f, s8i
254     dbreak_test 1, 0x80000020, 0xd0000060, 0xd0000070, s16i
255     dbreak_test 0, 0x80000020, 0xd0000060, 0xd0000074, s32i
256 test_end
258 test dbreak_invalid
259     dbreak_test 0, 0x40000030, 0xd0000071, 0xd0000070, l16ui
260     dbreak_test 1, 0x40000035, 0xd0000072, 0xd0000070, l32i
261 test_end
262 #endif
264 #endif
266 test_suite_end