Annotation of xinu/sys/ioint.s, revision 1.1.1.1

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        */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.