Statistics
| Branch: | Revision:

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