root / tests / tcg / xtensa / test_timer.S @ c09015dd
History | View | Annotate | Download (3.2 kB)
1 |
.include "macros.inc" |
---|---|
2 |
|
3 |
test_suite timer |
4 |
|
5 |
test ccount |
6 |
rsr a3, ccount |
7 |
rsr a4, ccount |
8 |
sub a3, a4, a3 |
9 |
assert eqi, a3, 1 |
10 |
test_end |
11 |
|
12 |
test ccompare |
13 |
movi a2, 0 |
14 |
wsr a2, intenable |
15 |
rsr a2, interrupt |
16 |
wsr a2, intclear |
17 |
movi a2, 0 |
18 |
wsr a2, ccompare1 |
19 |
wsr a2, ccompare2 |
20 |
|
21 |
movi a3, 20 |
22 |
rsr a2, ccount |
23 |
addi a2, a2, 20 |
24 |
wsr a2, ccompare0 |
25 |
rsr a2, interrupt |
26 |
assert eqi, a2, 0 |
27 |
loop a3, 1f |
28 |
rsr a3, interrupt |
29 |
bnez a3, 2f |
30 |
1: |
31 |
test_fail |
32 |
2: |
33 |
test_end |
34 |
|
35 |
test ccompare0_interrupt |
36 |
set_vector kernel, 2f |
37 |
movi a2, 0 |
38 |
wsr a2, intenable |
39 |
rsr a2, interrupt |
40 |
wsr a2, intclear |
41 |
movi a2, 0 |
42 |
wsr a2, ccompare1 |
43 |
wsr a2, ccompare2 |
44 |
|
45 |
movi a3, 20 |
46 |
rsr a2, ccount |
47 |
addi a2, a2, 20 |
48 |
wsr a2, ccompare0 |
49 |
rsync |
50 |
rsr a2, interrupt |
51 |
assert eqi, a2, 0 |
52 |
|
53 |
movi a2, 0x40 |
54 |
wsr a2, intenable |
55 |
rsil a2, 0 |
56 |
loop a3, 1f |
57 |
nop |
58 |
1: |
59 |
test_fail |
60 |
2: |
61 |
rsr a2, exccause |
62 |
assert eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */ |
63 |
test_end |
64 |
|
65 |
test ccompare1_interrupt |
66 |
set_vector level3, 2f |
67 |
movi a2, 0 |
68 |
wsr a2, intenable |
69 |
rsr a2, interrupt |
70 |
wsr a2, intclear |
71 |
movi a2, 0 |
72 |
wsr a2, ccompare0 |
73 |
wsr a2, ccompare2 |
74 |
|
75 |
movi a3, 20 |
76 |
rsr a2, ccount |
77 |
addi a2, a2, 20 |
78 |
wsr a2, ccompare1 |
79 |
rsync |
80 |
rsr a2, interrupt |
81 |
assert eqi, a2, 0 |
82 |
movi a2, 0x400 |
83 |
wsr a2, intenable |
84 |
rsil a2, 2 |
85 |
loop a3, 1f |
86 |
nop |
87 |
1: |
88 |
test_fail |
89 |
2: |
90 |
test_end |
91 |
|
92 |
test ccompare2_interrupt |
93 |
set_vector level5, 2f |
94 |
movi a2, 0 |
95 |
wsr a2, intenable |
96 |
rsr a2, interrupt |
97 |
wsr a2, intclear |
98 |
movi a2, 0 |
99 |
wsr a2, ccompare0 |
100 |
wsr a2, ccompare1 |
101 |
|
102 |
movi a3, 20 |
103 |
rsr a2, ccount |
104 |
addi a2, a2, 20 |
105 |
wsr a2, ccompare2 |
106 |
rsync |
107 |
rsr a2, interrupt |
108 |
assert eqi, a2, 0 |
109 |
movi a2, 0x2000 |
110 |
wsr a2, intenable |
111 |
rsil a2, 4 |
112 |
loop a3, 1f |
113 |
nop |
114 |
1: |
115 |
test_fail |
116 |
2: |
117 |
test_end |
118 |
|
119 |
test ccompare_interrupt_masked |
120 |
set_vector kernel, 2f |
121 |
movi a2, 0 |
122 |
wsr a2, intenable |
123 |
rsr a2, interrupt |
124 |
wsr a2, intclear |
125 |
movi a2, 0 |
126 |
wsr a2, ccompare2 |
127 |
|
128 |
movi a3, 40 |
129 |
rsr a2, ccount |
130 |
addi a2, a2, 20 |
131 |
wsr a2, ccompare1 |
132 |
addi a2, a2, 20 |
133 |
wsr a2, ccompare0 |
134 |
rsync |
135 |
rsr a2, interrupt |
136 |
assert eqi, a2, 0 |
137 |
|
138 |
movi a2, 0x40 |
139 |
wsr a2, intenable |
140 |
rsil a2, 0 |
141 |
loop a3, 1f |
142 |
nop |
143 |
1: |
144 |
test_fail |
145 |
2: |
146 |
rsr a2, exccause |
147 |
assert eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */ |
148 |
test_end |
149 |
|
150 |
test ccompare_interrupt_masked_waiti |
151 |
set_vector kernel, 2f |
152 |
movi a2, 0 |
153 |
wsr a2, intenable |
154 |
rsr a2, interrupt |
155 |
wsr a2, intclear |
156 |
movi a2, 0 |
157 |
wsr a2, ccompare2 |
158 |
|
159 |
movi a3, 40 |
160 |
rsr a2, ccount |
161 |
addi a2, a2, 20 |
162 |
wsr a2, ccompare1 |
163 |
addi a2, a2, 20 |
164 |
wsr a2, ccompare0 |
165 |
rsync |
166 |
rsr a2, interrupt |
167 |
assert eqi, a2, 0 |
168 |
|
169 |
movi a2, 0x40 |
170 |
wsr a2, intenable |
171 |
waiti 0 |
172 |
test_fail |
173 |
2: |
174 |
rsr a2, exccause |
175 |
assert eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */ |
176 |
test_end |
177 |
|
178 |
test_suite_end |