|
|
1.1 ! root 1: /* ioint.s */ ! 2: ! 3: /* I/O interrupts trap here. Original PC and PS and saved values */ ! 4: /* of low registers are on top of the stack upon entry. */ ! 5: /* Devices actually vector to locations defined in dispconf.h. */ ! 6: /* Each vector-to code segment in dispconf.h stores the device */ ! 7: /* descriptor value in r1. */ ! 8: ! 9: .text ! 10: .align 1 ! 11: ! 12: #include <procreg.h> ! 13: #include <conf.h> ! 14: #include <dispconf.h> /* ASSEMBLER CODE INCLUDED HERE */ ! 15: ! 16: ioint: ! 17: pushr $LOWREGS ! 18: subl3 $_devveci0,NLOWREG*4(sp),r0/* find where interrupt vector*/ ! 19: bicl2 $7, r0 /* is and call corresponding */ ! 20: addl2 $_intmap, r0 /* entry in intmap */ ! 21: pushl 4(r0) /* push "code" from intmap */ ! 22: calls $1, *(r0) /* call the interrupt routine */ ! 23: popr $LOWREGS /* restore low registers */ ! 24: tstl (sp)+ /* pop pc from bsbw */ ! 25: rei /* Return from interrupt */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.