Annotation of xinu/sys/interrupt.s, revision 1.1

1.1     ! root        1: /* interrupt.s - disable, restore, enable */
        !             2: 
        !             3: #include <procreg.h>
        !             4: 
        !             5: /*----------------------------------------------------------------------------
        !             6:  * disable -- disable interrupts and save current IPL at argument address
        !             7:  *----------------------------------------------------------------------------
        !             8:  *     On entry, the stack contains (at AP+4) the address of a longword at
        !             9:  *     which disable should save the current IPL.
        !            10:  *     To call:  PStype ps;  disable(ps);
        !            11: */
        !            12:        .text                           /* text in subsegment 0         */
        !            13:        .align  1                       /* clr low bit of loc counter   */
        !            14:        .globl  _disable                /* external name                */
        !            15: _disable:                              /* entry point for disable      */
        !            16:        .word   0x0                     /* entry mask,save no registers */
        !            17:        mfpr    $IPL, *4(ap)            /* store old IPL                */
        !            18:        mtpr    $DISABLE, $IPL          /* disable interrupts           */
        !            19:        ret
        !            20: 
        !            21: /*----------------------------------------------------------------------------
        !            22:  * restore -- restore interrupts to argument IPL
        !            23:  *----------------------------------------------------------------------------
        !            24:  *     On entry, the stack contains (at AP+4) the address of a longword
        !            25:  *     containing the new IPL level.
        !            26:  *     To call:  PStype ps;  restore(ps);
        !            27: */
        !            28:        .text
        !            29:        .align  1
        !            30:        .globl  _restore                /* global procedure name        */
        !            31: _restore:
        !            32:        .word   0x0                     /* entry mask,no regs saved     */
        !            33:        mtpr    *4(ap), $IPL            /* restore IPL                  */
        !            34:        ret
        !            35: 
        !            36: /*----------------------------------------------------------------------------
        !            37:  * enable -- enable interrupts
        !            38:  *----------------------------------------------------------------------------
        !            39:  *     To call:  enable();
        !            40: */
        !            41:        .text
        !            42:        .align  1
        !            43:        .globl  _enable                 /* global procedure name        */
        !            44: _enable:
        !            45:        .word   0x0                     /* entry mask,no regs saved     */
        !            46:        mtpr    $ENABLE, $IPL           /* enable interrupts            */
        !            47:        ret

unix.superglobalmegacorp.com

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