1#include "macros.inc" 2 3test_suite timer 4 5test ccount 6 rsr a3, ccount 7 rsr a4, ccount 8 sub a3, a4, a3 9 assert eqi, a3, 1 10test_end 11 12test 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 301: 31 test_fail 322: 33test_end 34 35test 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 581: 59 test_fail 602: 61 rsr a2, exccause 62 assert eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */ 63test_end 64 65test 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 871: 88 test_fail 892: 90test_end 91 92test 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 1141: 115 test_fail 1162: 117test_end 118 119test 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 1431: 144 test_fail 1452: 146 rsr a2, exccause 147 assert eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */ 148test_end 149 150test 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 1732: 174 rsr a2, exccause 175 assert eqi, a2, 4 /* LEVEL1_INTERRUPT_CAUSE */ 176test_end 177 178test_suite_end 179