|
|
1.1 ! root 1: .include "macros.inc" ! 2: ! 3: test_suite interrupt ! 4: ! 5: .macro clear_interrupts ! 6: movi a2, 0 ! 7: wsr a2, intenable ! 8: wsr a2, ccompare0 ! 9: wsr a2, ccompare1 ! 10: wsr a2, ccompare2 ! 11: esync ! 12: rsr a2, interrupt ! 13: wsr a2, intclear ! 14: ! 15: esync ! 16: rsr a2, interrupt ! 17: assert eqi, a2, 0 ! 18: .endm ! 19: ! 20: .macro check_l1 ! 21: rsr a2, ps ! 22: movi a3, 0x1f /* EXCM | INTMASK */ ! 23: and a2, a2, a3 ! 24: assert eqi, a2, 0x10 /* only EXCM is set for level-1 interrupt */ ! 25: rsr a2, exccause ! 26: assert eqi, a2, 4 ! 27: .endm ! 28: ! 29: test rsil ! 30: clear_interrupts ! 31: ! 32: rsr a2, ps ! 33: rsil a3, 7 ! 34: rsr a4, ps ! 35: assert eq, a2, a3 ! 36: movi a2, 0xf ! 37: and a2, a4, a2 ! 38: assert eqi, a2, 7 ! 39: xor a3, a3, a4 ! 40: movi a2, 0xfffffff0 ! 41: and a2, a3, a2 ! 42: assert eqi, a2, 0 ! 43: test_end ! 44: ! 45: test soft_disabled ! 46: set_vector kernel, 1f ! 47: clear_interrupts ! 48: ! 49: movi a2, 0x80 ! 50: wsr a2, intset ! 51: esync ! 52: rsr a3, interrupt ! 53: assert eq, a2, a3 ! 54: wsr a2, intclear ! 55: esync ! 56: rsr a3, interrupt ! 57: assert eqi, a3, 0 ! 58: j 2f ! 59: 1: ! 60: test_fail ! 61: 2: ! 62: test_end ! 63: ! 64: test soft_intenable ! 65: set_vector kernel, 1f ! 66: clear_interrupts ! 67: ! 68: movi a2, 0x80 ! 69: wsr a2, intset ! 70: esync ! 71: rsr a3, interrupt ! 72: assert eq, a2, a3 ! 73: rsil a3, 0 ! 74: wsr a2, intenable ! 75: esync ! 76: test_fail ! 77: 1: ! 78: check_l1 ! 79: test_end ! 80: ! 81: test soft_rsil ! 82: set_vector kernel, 1f ! 83: clear_interrupts ! 84: ! 85: movi a2, 0x80 ! 86: wsr a2, intset ! 87: esync ! 88: rsr a3, interrupt ! 89: assert eq, a2, a3 ! 90: wsr a2, intenable ! 91: rsil a3, 0 ! 92: esync ! 93: test_fail ! 94: 1: ! 95: check_l1 ! 96: test_end ! 97: ! 98: test soft_waiti ! 99: set_vector kernel, 1f ! 100: clear_interrupts ! 101: ! 102: movi a2, 0x80 ! 103: wsr a2, intset ! 104: esync ! 105: rsr a3, interrupt ! 106: assert eq, a2, a3 ! 107: wsr a2, intenable ! 108: waiti 0 ! 109: test_fail ! 110: 1: ! 111: check_l1 ! 112: test_end ! 113: ! 114: test soft_user ! 115: set_vector kernel, 1f ! 116: set_vector user, 2f ! 117: clear_interrupts ! 118: ! 119: movi a2, 0x80 ! 120: wsr a2, intset ! 121: esync ! 122: rsr a3, interrupt ! 123: assert eq, a2, a3 ! 124: wsr a2, intenable ! 125: ! 126: rsr a2, ps ! 127: movi a3, 0x20 ! 128: or a2, a2, a3 ! 129: wsr a2, ps ! 130: waiti 0 ! 131: 1: ! 132: test_fail ! 133: 2: ! 134: check_l1 ! 135: test_end ! 136: ! 137: test soft_priority ! 138: set_vector kernel, 1f ! 139: set_vector level3, 2f ! 140: clear_interrupts ! 141: ! 142: movi a2, 0x880 ! 143: wsr a2, intenable ! 144: rsil a3, 0 ! 145: esync ! 146: wsr a2, intset ! 147: esync ! 148: 1: ! 149: test_fail ! 150: 2: ! 151: rsr a2, ps ! 152: movi a3, 0x1f /* EXCM | INTMASK */ ! 153: and a2, a2, a3 ! 154: movi a3, 0x13 ! 155: assert eq, a2, a3 /* EXCM and INTMASK are set ! 156: for high-priority interrupt */ ! 157: test_end ! 158: ! 159: test eps_epc_rfi ! 160: set_vector level3, 3f ! 161: clear_interrupts ! 162: reset_ps ! 163: ! 164: movi a2, 0x880 ! 165: wsr a2, intenable ! 166: rsil a3, 0 ! 167: rsr a3, ps ! 168: esync ! 169: wsr a2, intset ! 170: 1: ! 171: esync ! 172: 2: ! 173: test_fail ! 174: 3: ! 175: rsr a2, eps3 ! 176: assert eq, a2, a3 ! 177: rsr a2, epc3 ! 178: movi a3, 1b ! 179: assert ge, a2, a3 ! 180: movi a3, 2b ! 181: assert ge, a3, a2 ! 182: movi a2, 4f ! 183: wsr a2, epc3 ! 184: movi a2, 0x40003 ! 185: wsr a2, eps3 ! 186: rfi 3 ! 187: test_fail ! 188: 4: ! 189: rsr a2, ps ! 190: movi a3, 0x40003 ! 191: assert eq, a2, a3 ! 192: test_end ! 193: ! 194: test_suite_end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.