root / tests / tcg / xtensa / test_interrupt.S @ c09015dd
History | View | Annotate | Download (3.2 kB)
1 | 7d890b40 | Max Filippov | .include "macros.inc" |
---|---|---|---|
2 | 7d890b40 | Max Filippov | |
3 | 7d890b40 | Max Filippov | test_suite interrupt |
4 | 7d890b40 | Max Filippov | |
5 | 7d890b40 | Max Filippov | .macro clear_interrupts |
6 | 7d890b40 | Max Filippov | movi a2, 0 |
7 | 7d890b40 | Max Filippov | wsr a2, intenable |
8 | 7d890b40 | Max Filippov | wsr a2, ccompare0 |
9 | 7d890b40 | Max Filippov | wsr a2, ccompare1 |
10 | 7d890b40 | Max Filippov | wsr a2, ccompare2 |
11 | 7d890b40 | Max Filippov | esync |
12 | 7d890b40 | Max Filippov | rsr a2, interrupt |
13 | 7d890b40 | Max Filippov | wsr a2, intclear |
14 | 7d890b40 | Max Filippov | |
15 | 7d890b40 | Max Filippov | esync |
16 | 7d890b40 | Max Filippov | rsr a2, interrupt |
17 | 7d890b40 | Max Filippov | assert eqi, a2, 0 |
18 | 7d890b40 | Max Filippov | .endm |
19 | 7d890b40 | Max Filippov | |
20 | 7d890b40 | Max Filippov | .macro check_l1 |
21 | 7d890b40 | Max Filippov | rsr a2, ps |
22 | 7d890b40 | Max Filippov | movi a3, 0x1f /* EXCM | INTMASK */ |
23 | 7d890b40 | Max Filippov | and a2, a2, a3 |
24 | 7d890b40 | Max Filippov | assert eqi, a2, 0x10 /* only EXCM is set for level-1 interrupt */ |
25 | 7d890b40 | Max Filippov | rsr a2, exccause |
26 | 7d890b40 | Max Filippov | assert eqi, a2, 4 |
27 | 7d890b40 | Max Filippov | .endm |
28 | 7d890b40 | Max Filippov | |
29 | 7d890b40 | Max Filippov | test rsil |
30 | 7d890b40 | Max Filippov | clear_interrupts |
31 | 7d890b40 | Max Filippov | |
32 | 7d890b40 | Max Filippov | rsr a2, ps |
33 | 7d890b40 | Max Filippov | rsil a3, 7 |
34 | 7d890b40 | Max Filippov | rsr a4, ps |
35 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
36 | 7d890b40 | Max Filippov | movi a2, 0xf |
37 | 7d890b40 | Max Filippov | and a2, a4, a2 |
38 | 7d890b40 | Max Filippov | assert eqi, a2, 7 |
39 | 7d890b40 | Max Filippov | xor a3, a3, a4 |
40 | 7d890b40 | Max Filippov | movi a2, 0xfffffff0 |
41 | 7d890b40 | Max Filippov | and a2, a3, a2 |
42 | 7d890b40 | Max Filippov | assert eqi, a2, 0 |
43 | 7d890b40 | Max Filippov | test_end |
44 | 7d890b40 | Max Filippov | |
45 | 7d890b40 | Max Filippov | test soft_disabled |
46 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
47 | 7d890b40 | Max Filippov | clear_interrupts |
48 | 7d890b40 | Max Filippov | |
49 | 7d890b40 | Max Filippov | movi a2, 0x80 |
50 | 7d890b40 | Max Filippov | wsr a2, intset |
51 | 7d890b40 | Max Filippov | esync |
52 | 7d890b40 | Max Filippov | rsr a3, interrupt |
53 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
54 | 7d890b40 | Max Filippov | wsr a2, intclear |
55 | 7d890b40 | Max Filippov | esync |
56 | 7d890b40 | Max Filippov | rsr a3, interrupt |
57 | 7d890b40 | Max Filippov | assert eqi, a3, 0 |
58 | 7d890b40 | Max Filippov | j 2f |
59 | 7d890b40 | Max Filippov | 1: |
60 | 7d890b40 | Max Filippov | test_fail |
61 | 7d890b40 | Max Filippov | 2: |
62 | 7d890b40 | Max Filippov | test_end |
63 | 7d890b40 | Max Filippov | |
64 | 7d890b40 | Max Filippov | test soft_intenable |
65 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
66 | 7d890b40 | Max Filippov | clear_interrupts |
67 | 7d890b40 | Max Filippov | |
68 | 7d890b40 | Max Filippov | movi a2, 0x80 |
69 | 7d890b40 | Max Filippov | wsr a2, intset |
70 | 7d890b40 | Max Filippov | esync |
71 | 7d890b40 | Max Filippov | rsr a3, interrupt |
72 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
73 | 7d890b40 | Max Filippov | rsil a3, 0 |
74 | 7d890b40 | Max Filippov | wsr a2, intenable |
75 | 7d890b40 | Max Filippov | esync |
76 | 7d890b40 | Max Filippov | test_fail |
77 | 7d890b40 | Max Filippov | 1: |
78 | 7d890b40 | Max Filippov | check_l1 |
79 | 7d890b40 | Max Filippov | test_end |
80 | 7d890b40 | Max Filippov | |
81 | 7d890b40 | Max Filippov | test soft_rsil |
82 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
83 | 7d890b40 | Max Filippov | clear_interrupts |
84 | 7d890b40 | Max Filippov | |
85 | 7d890b40 | Max Filippov | movi a2, 0x80 |
86 | 7d890b40 | Max Filippov | wsr a2, intset |
87 | 7d890b40 | Max Filippov | esync |
88 | 7d890b40 | Max Filippov | rsr a3, interrupt |
89 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
90 | 7d890b40 | Max Filippov | wsr a2, intenable |
91 | 7d890b40 | Max Filippov | rsil a3, 0 |
92 | 7d890b40 | Max Filippov | esync |
93 | 7d890b40 | Max Filippov | test_fail |
94 | 7d890b40 | Max Filippov | 1: |
95 | 7d890b40 | Max Filippov | check_l1 |
96 | 7d890b40 | Max Filippov | test_end |
97 | 7d890b40 | Max Filippov | |
98 | 7d890b40 | Max Filippov | test soft_waiti |
99 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
100 | 7d890b40 | Max Filippov | clear_interrupts |
101 | 7d890b40 | Max Filippov | |
102 | 7d890b40 | Max Filippov | movi a2, 0x80 |
103 | 7d890b40 | Max Filippov | wsr a2, intset |
104 | 7d890b40 | Max Filippov | esync |
105 | 7d890b40 | Max Filippov | rsr a3, interrupt |
106 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
107 | 7d890b40 | Max Filippov | wsr a2, intenable |
108 | 7d890b40 | Max Filippov | waiti 0 |
109 | 7d890b40 | Max Filippov | test_fail |
110 | 7d890b40 | Max Filippov | 1: |
111 | 7d890b40 | Max Filippov | check_l1 |
112 | 7d890b40 | Max Filippov | test_end |
113 | 7d890b40 | Max Filippov | |
114 | 7d890b40 | Max Filippov | test soft_user |
115 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
116 | 7d890b40 | Max Filippov | set_vector user, 2f |
117 | 7d890b40 | Max Filippov | clear_interrupts |
118 | 7d890b40 | Max Filippov | |
119 | 7d890b40 | Max Filippov | movi a2, 0x80 |
120 | 7d890b40 | Max Filippov | wsr a2, intset |
121 | 7d890b40 | Max Filippov | esync |
122 | 7d890b40 | Max Filippov | rsr a3, interrupt |
123 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
124 | 7d890b40 | Max Filippov | wsr a2, intenable |
125 | 7d890b40 | Max Filippov | |
126 | 7d890b40 | Max Filippov | rsr a2, ps |
127 | 7d890b40 | Max Filippov | movi a3, 0x20 |
128 | 7d890b40 | Max Filippov | or a2, a2, a3 |
129 | 7d890b40 | Max Filippov | wsr a2, ps |
130 | 7d890b40 | Max Filippov | waiti 0 |
131 | 7d890b40 | Max Filippov | 1: |
132 | 7d890b40 | Max Filippov | test_fail |
133 | 7d890b40 | Max Filippov | 2: |
134 | 7d890b40 | Max Filippov | check_l1 |
135 | 7d890b40 | Max Filippov | test_end |
136 | 7d890b40 | Max Filippov | |
137 | 7d890b40 | Max Filippov | test soft_priority |
138 | 7d890b40 | Max Filippov | set_vector kernel, 1f |
139 | 7d890b40 | Max Filippov | set_vector level3, 2f |
140 | 7d890b40 | Max Filippov | clear_interrupts |
141 | 7d890b40 | Max Filippov | |
142 | 7d890b40 | Max Filippov | movi a2, 0x880 |
143 | 7d890b40 | Max Filippov | wsr a2, intenable |
144 | 7d890b40 | Max Filippov | rsil a3, 0 |
145 | 7d890b40 | Max Filippov | esync |
146 | 7d890b40 | Max Filippov | wsr a2, intset |
147 | 7d890b40 | Max Filippov | esync |
148 | 7d890b40 | Max Filippov | 1: |
149 | 7d890b40 | Max Filippov | test_fail |
150 | 7d890b40 | Max Filippov | 2: |
151 | 7d890b40 | Max Filippov | rsr a2, ps |
152 | 7d890b40 | Max Filippov | movi a3, 0x1f /* EXCM | INTMASK */ |
153 | 7d890b40 | Max Filippov | and a2, a2, a3 |
154 | 7d890b40 | Max Filippov | movi a3, 0x13 |
155 | 7d890b40 | Max Filippov | assert eq, a2, a3 /* EXCM and INTMASK are set |
156 | 7d890b40 | Max Filippov | for high-priority interrupt */ |
157 | 7d890b40 | Max Filippov | test_end |
158 | 7d890b40 | Max Filippov | |
159 | 7d890b40 | Max Filippov | test eps_epc_rfi |
160 | 7d890b40 | Max Filippov | set_vector level3, 3f |
161 | 7d890b40 | Max Filippov | clear_interrupts |
162 | 7d890b40 | Max Filippov | reset_ps |
163 | 7d890b40 | Max Filippov | |
164 | 7d890b40 | Max Filippov | movi a2, 0x880 |
165 | 7d890b40 | Max Filippov | wsr a2, intenable |
166 | 7d890b40 | Max Filippov | rsil a3, 0 |
167 | 7d890b40 | Max Filippov | rsr a3, ps |
168 | 7d890b40 | Max Filippov | esync |
169 | 7d890b40 | Max Filippov | wsr a2, intset |
170 | 7d890b40 | Max Filippov | 1: |
171 | 7d890b40 | Max Filippov | esync |
172 | 7d890b40 | Max Filippov | 2: |
173 | 7d890b40 | Max Filippov | test_fail |
174 | 7d890b40 | Max Filippov | 3: |
175 | 7d890b40 | Max Filippov | rsr a2, eps3 |
176 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
177 | 7d890b40 | Max Filippov | rsr a2, epc3 |
178 | 7d890b40 | Max Filippov | movi a3, 1b |
179 | 7d890b40 | Max Filippov | assert ge, a2, a3 |
180 | 7d890b40 | Max Filippov | movi a3, 2b |
181 | 7d890b40 | Max Filippov | assert ge, a3, a2 |
182 | 7d890b40 | Max Filippov | movi a2, 4f |
183 | 7d890b40 | Max Filippov | wsr a2, epc3 |
184 | 7d890b40 | Max Filippov | movi a2, 0x40003 |
185 | 7d890b40 | Max Filippov | wsr a2, eps3 |
186 | 7d890b40 | Max Filippov | rfi 3 |
187 | 7d890b40 | Max Filippov | test_fail |
188 | 7d890b40 | Max Filippov | 4: |
189 | 7d890b40 | Max Filippov | rsr a2, ps |
190 | 7d890b40 | Max Filippov | movi a3, 0x40003 |
191 | 7d890b40 | Max Filippov | assert eq, a2, a3 |
192 | 7d890b40 | Max Filippov | test_end |
193 | 7d890b40 | Max Filippov | |
194 | 7d890b40 | Max Filippov | test_suite_end |