|
|
1.1 root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.