Annotation of researchv9/jerq/src/mux/term/excep.s, revision 1.1

1.1     ! root        1:        .globl  excep_norm
        !             2: excep_norm:
        !             3:        ORW2    &0x1e000,%psw           # IPL up to 15
        !             4:        TSTW    %r0             # let psw bits settle 
        !             5:        PUSHW   %r0             # save temporary registers
        !             6:        PUSHW   %r1             # save temporary registers
        !             7:        PUSHW   %r2             # save temporary registers
        !             8:        PUSHW   &3              # type = NORMAL
        !             9:        PUSHAW  -24(%sp)        # push address of saved pc -(24) 
        !            10:        PUSHAW  -24(%sp)        # push address of saved psw -24 off of new stack
        !            11:        PUSHW   -28(%sp)        # push saved psw -28 off of new stack (PUSH)
        !            12:        PUSHW   %pcbp           # push saved pcbp (not used!)
        !            13:        call    &5,*(Sys+(4*153))       # /* trap */trap will decide to return or not
        !            14:        POPW    %r2             #restore temporary registers
        !            15:        POPW    %r1             #restore temporary registers
        !            16:        POPW    %r0             #restore temporary registers
        !            17:        RETG                    # resume of trap allows (brkpt or trace )
        !            18: 
        !            19:        .globl  excep_stack
        !            20: excep_stack:
        !            21:        MOVW    -0x4(%isp),%r0  # get saved %pcbp 
        !            22:        PUSHW   &2              # type = STACK
        !            23:        PUSHAW  0x4(%r0)        # push address of saved pc 
        !            24:        PUSHAW  0x0(%r0)        # push address of saved psw 
        !            25:        PUSHW   0x0(%r0)        # push saved psw 
        !            26:        PUSHW   %r0             # push saved pcbp 
        !            27:        call    &5,*(Sys+(4*153))       # /* trap */ let trap handle the situation
        !            28:        RETPS                   # if trap returns
        !            29: 
        !            30:        .globl  excep_proc
        !            31: excep_proc:
        !            32:        PUSHW   &1              # type = PROCESS
        !            33:        PUSHW   &0              # push address of saved pc  (NONE!)
        !            34:        PUSHW   &0              # push address of saved psw (NONE!)
        !            35:        PUSHW   %psw            # push psw of current proc!!!
        !            36:        PUSHW   -0x4(%isp)      # push saved %pcbp 
        !            37:        call    &5,*(Sys+(4*153))       # /* trap */ let trap handle the situation
        !            38:        RETPS                   # if trap returns

unix.superglobalmegacorp.com

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