|
|
Power 6/32 Unix version 1.2b
#/* # * Interrupt vector routines # */ #define SCBVEC(name) .align 2 \ .globl _X/**/name \ _X/**/name #define PANIC(msg) clrl _waittime \ pushab 1f \ calls $1*4+4,_panic \ halt \ 1: .asciz msg #define PRINTF(n,msg) pushab 1f; calls $(n+1)*4+4,_printf; MSG(msg) #define MSG(msg) 1: .asciz msg #define PUSHR pushl r5; pushl r4; pushl r3; pushl r2;\ pushl r1; pushl r0 #define POPR movl (sp)+,r0 \ movl (sp)+,r1 \ movl (sp)+,r2 \ movl (sp)+,r3 \ movl (sp)+,r4 \ movl (sp)+,r5 #/* # *unknown interrupt #*/ SCBVEC(unknown): halt #/* # # *powerfail # *psl & pc are saved on int stack. # *This routine saves general registers,memory mgmt registers, # *privileged registers, etc. in _dbuf & then executes halt. # * # *The restart location is saved at 0x00000c00. CPU 2 should # *restart at the location specified after power is up. # #*/ SCBVEC(powerfail): /*save context and restart location*/ halt #/* # # *interval timer # #*/ SCBVEC(hardclock): rei #/* # *console terminal receive interrupt #*/ SCBVEC(cnrint): halt #/* # *console terminal transmit interrupt #*/ SCBVEC(cnxint): halt #/* # *software generated interrupts #*/ SCBVEC(s15): halt #/* # *software generated interrupts #*/ SCBVEC(s14): halt #/* # *software generated interrupts #*/ SCBVEC(s13): halt #/* # *software generated interrupts #*/ SCBVEC(s12): halt #/* # *software generated interrupts #*/ SCBVEC(s11): halt #/* # *software generated interrupts #*/ SCBVEC(s10): halt #/* # *software generated interrupts #*/ SCBVEC(s9): halt #/* # *software generated interrupts #*/ SCBVEC(s8): halt #/* # *software generated interrupts #*/ SCBVEC(s7): halt #/* # *software generated interrupts #*/ SCBVEC(s6): halt #/* # *software generated interrupts #*/ SCBVEC(s5): halt #/* # *software generated interrupts #*/ SCBVEC(s4): halt #/* # *software generated interrupts #*/ SCBVEC(s3): halt #/* # *software generated interrupts #*/ SCBVEC(s2): halt #/* # *software generated interrupts #*/ SCBVEC(s1): halt #/* # *io interrupt #*/ SCBVEC(iovec14): halt SCBVEC(iovec15): halt SCBVEC(iovec16): halt SCBVEC(iovec17): halt #/* # *EXCEPTIONS #*/ #/* # # *buserror # *psl, pc, and errorcode are pushed onto int stack. # *ipl is raised to 0x1d. # *buserror could be due to: # *non-existent memory # *versabus timeout # *uncorrectable memory # *versabus error (BERR) # *versabus parity error # #*/ SCBVEC(buserror): halt #/* # *kernel stack not valid # *happens only during the initiation of another exception or # *interrupt.The process must be aborted. # *pc & psl are pushed onto INTSTACK. # * IPL is raised to 0x1f. # *this routine calls _panic routine written in C which prints # *the message & waits for the operator action. #*/ SCBVEC(kspnotval): halt #/* #* Trap and fault vector routines #*/ #define TRAP(a) pushl $a; brw alltraps SCBVEC(prvinflt): halt SCBVEC(resopflt): halt SCBVEC(resadflt): halt SCBVEC(bptflt): halt SCBVEC(tracep): halt SCBVEC(arithtrap): halt SCBVEC(protflt): /*access control violation*/ halt SCBVEC(transflt): halt SCBVEC(alignflt): halt alltraps: halt #/* mfpr $USP,-(sp) # calls $0*4+4,_trap # mtpr (sp)+,$USP # incl _cnt+V_TRAP # # movab (sp),r12 # addl2 $12,r12 # movl r12,sp # # mtpr $HIGH,$IPL # rei #*/ SCBVEC(kcall): /*kcall*/ halt #/* # pushl $SYSCALL # mfpr $USP,-(sp) # calls $0*4+4,_syscall # mtpr (sp)+,$USP # incl _cnt+V_SYSCALL # # movab (sp),r12 # addl2 $12,r12 # movl r12,sp # # mtpr $HIGH,$IPL # rei #*/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.