Statistics
| Branch: | Revision:

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