Annotation of xinu/sys/ioint.s, revision 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.