|
|
1.1 ! root 1: #/* ! 2: # * Interrupt vector routines ! 3: # */ ! 4: ! 5: #define SCBVEC(name) .align 2 \ ! 6: .globl _X/**/name \ ! 7: _X/**/name ! 8: #define PANIC(msg) clrl _waittime \ ! 9: pushab 1f \ ! 10: calls $1*4+4,_panic \ ! 11: halt \ ! 12: 1: .asciz msg ! 13: #define PRINTF(n,msg) pushab 1f; calls $(n+1)*4+4,_printf; MSG(msg) ! 14: #define MSG(msg) 1: .asciz msg ! 15: #define PUSHR pushl r5; pushl r4; pushl r3; pushl r2;\ ! 16: pushl r1; pushl r0 ! 17: ! 18: #define POPR movl (sp)+,r0 \ ! 19: movl (sp)+,r1 \ ! 20: movl (sp)+,r2 \ ! 21: movl (sp)+,r3 \ ! 22: movl (sp)+,r4 \ ! 23: movl (sp)+,r5 ! 24: #/* ! 25: # *unknown interrupt ! 26: #*/ ! 27: ! 28: SCBVEC(unknown): ! 29: halt ! 30: #/* ! 31: # ! 32: # *powerfail ! 33: # *psl & pc are saved on int stack. ! 34: # *This routine saves general registers,memory mgmt registers, ! 35: # *privileged registers, etc. in _dbuf & then executes halt. ! 36: # * ! 37: # *The restart location is saved at 0x00000c00. CPU 2 should ! 38: # *restart at the location specified after power is up. ! 39: # ! 40: #*/ ! 41: ! 42: SCBVEC(powerfail): ! 43: ! 44: /*save context and restart location*/ ! 45: ! 46: halt ! 47: ! 48: #/* ! 49: # ! 50: # *interval timer ! 51: # ! 52: #*/ ! 53: ! 54: SCBVEC(hardclock): ! 55: # ! 56: # Timer interrupt ! 57: # ! 58: rei ! 59: ! 60: SCBVEC(cnrint): ! 61: halt ! 62: #/* ! 63: # *console terminal transmit interrupt ! 64: #*/ ! 65: ! 66: SCBVEC(cnxint): ! 67: rei ! 68: #/* ! 69: # *software generated interrupts ! 70: #*/ ! 71: ! 72: SCBVEC(s15): ! 73: halt ! 74: #/* ! 75: # *software generated interrupts ! 76: #*/ ! 77: ! 78: SCBVEC(s14): ! 79: halt ! 80: #/* ! 81: # *software generated interrupts ! 82: #*/ ! 83: ! 84: SCBVEC(s13): ! 85: halt ! 86: #/* ! 87: # *software generated interrupts ! 88: #*/ ! 89: ! 90: SCBVEC(s12): ! 91: halt ! 92: #/* ! 93: # *software generated interrupts ! 94: #*/ ! 95: ! 96: SCBVEC(s11): ! 97: halt ! 98: #/* ! 99: # *software generated interrupts ! 100: #*/ ! 101: ! 102: SCBVEC(s10): ! 103: halt ! 104: #/* ! 105: # *software generated interrupts ! 106: #*/ ! 107: ! 108: SCBVEC(s9): ! 109: halt ! 110: #/* ! 111: # *software generated interrupts ! 112: #*/ ! 113: ! 114: SCBVEC(s8): ! 115: halt ! 116: #/* ! 117: # *software generated interrupts ! 118: #*/ ! 119: ! 120: SCBVEC(s7): ! 121: halt ! 122: #/* ! 123: # *software generated interrupts ! 124: #*/ ! 125: ! 126: SCBVEC(s6): ! 127: halt ! 128: #/* ! 129: # *software generated interrupts ! 130: #*/ ! 131: ! 132: SCBVEC(s5): ! 133: halt ! 134: #/* ! 135: # *software generated interrupts ! 136: #*/ ! 137: ! 138: SCBVEC(s4): ! 139: halt ! 140: #/* ! 141: # *software generated interrupts ! 142: #*/ ! 143: ! 144: SCBVEC(s3): ! 145: halt ! 146: #/* ! 147: # *software generated interrupts ! 148: #*/ ! 149: ! 150: SCBVEC(s2): ! 151: halt ! 152: #/* ! 153: # *software generated interrupts ! 154: #*/ ! 155: ! 156: SCBVEC(s1): ! 157: halt ! 158: ! 159: #/* ! 160: # *io interrupt ! 161: #*/ ! 162: ! 163: SCBVEC(iovec14): ! 164: halt ! 165: SCBVEC(iovec15): ! 166: halt ! 167: SCBVEC(iovec16): ! 168: halt ! 169: SCBVEC(iovec17): ! 170: halt ! 171: ! 172: #/* ! 173: # *EXCEPTIONS ! 174: #*/ ! 175: ! 176: #/* ! 177: # ! 178: # *buserror ! 179: # *psl, pc, and errorcode are pushed onto int stack. ! 180: # *ipl is raised to 0x1d. ! 181: # *buserror could be due to: ! 182: # *non-existent memory ! 183: # *versabus timeout ! 184: # *uncorrectable memory ! 185: # *versabus error (BERR) ! 186: # *versabus parity error ! 187: # ! 188: #*/ ! 189: SCBVEC(buserror): ! 190: halt ! 191: ! 192: #/* ! 193: # *kernel stack not valid ! 194: # *happens only during the initiation of another exception or ! 195: # *interrupt.The process must be aborted. ! 196: # *pc & psl are pushed onto INTSTACK. ! 197: # * IPL is raised to 0x1f. ! 198: # *this routine calls _panic routine written in C which prints ! 199: # *the message & waits for the operator action. ! 200: #*/ ! 201: ! 202: SCBVEC(kspnotval): ! 203: halt ! 204: #/* ! 205: #* Trap and fault vector routines ! 206: #*/ ! 207: #define TRAP(a) pushl $a; brw alltraps ! 208: ! 209: SCBVEC(prvinflt): ! 210: halt ! 211: SCBVEC(resopflt): ! 212: halt ! 213: SCBVEC(resadflt): ! 214: halt ! 215: SCBVEC(bptflt): ! 216: halt ! 217: SCBVEC(tracep): ! 218: halt ! 219: SCBVEC(arithtrap): ! 220: halt ! 221: SCBVEC(protflt): /*access control violation*/ ! 222: halt ! 223: SCBVEC(transflt): ! 224: halt ! 225: SCBVEC(alignflt): ! 226: halt ! 227: ! 228: alltraps: ! 229: halt ! 230: #/* mfpr $USP,-(sp) ! 231: # calls $0*4+4,_trap ! 232: # mtpr (sp)+,$USP ! 233: # incl _cnt+V_TRAP ! 234: # ! 235: # movab (sp),r12 ! 236: # addl2 $12,r12 ! 237: # movl r12,sp ! 238: # ! 239: # mtpr $HIGH,$IPL ! 240: # rei ! 241: #*/ ! 242: ! 243: SCBVEC(kcall): /*kcall*/ ! 244: halt ! 245: #/* ! 246: # pushl $SYSCALL ! 247: # mfpr $USP,-(sp) ! 248: # calls $0*4+4,_syscall ! 249: # mtpr (sp)+,$USP ! 250: # incl _cnt+V_SYSCALL ! 251: # ! 252: # movab (sp),r12 ! 253: # addl2 $12,r12 ! 254: # movl r12,sp ! 255: # ! 256: # mtpr $HIGH,$IPL ! 257: # rei ! 258: #*/ ! 259: ! 260:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.