|
|
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.