Annotation of 40BSD/lib/libpc/GOTO.s, revision 1.1.1.1

1.1       root        1: # Copyright (c) 1979 Regents of the University of California
                      2: #
                      3: # sccsid[] = "@(#)GOTO.s 1.1 10/29/80";
                      4: #
                      5:        .data
                      6: jmplbl:
                      7:        .long   0
                      8: frame:
                      9:        .long   0
                     10:        .text
                     11: 
                     12:        .globl  _GOTO
                     13:        .align  1
                     14: _GOTO:
                     15:        .word   0
                     16:        movl    *4(ap),frame    #save parameters
                     17:        movl    PC(fp),jmplbl
                     18:        moval   unwind,PC(fp)   #begin unwinding
                     19:        ret
                     20: unwind:
                     21:        tstl    (fp)            #check for exception vector
                     22:        bneq    L1
                     23:        cmpl    ap,__disply+8   #check for past global procedure
                     24:        bgequ   egoto
                     25:        moval   unwind,PC(fp)   #blow away this stack frame
                     26:        ret
                     27: L1:
                     28:        cmpl    ap,frame        #check for requested frame
                     29:        bgtru   egoto           #lost it somewhere
                     30:        blssu   L2              #not there yet
                     31:        jmp     *jmplbl         #proceed in this section
                     32: L2:
                     33:        pushl   -4(fp)          #level of this frame
                     34:        calls   $1,*(fp)        #call the exception handler
                     35:        movq    -12(fp),*-4(fp) #restore the display
                     36:        moval   unwind,PC(fp)   #blow away this stack frame
                     37:        ret
                     38: egoto:
                     39:        pushl   $EGOTO
                     40:        calls   $1,_ERROR
                     41:        ret

unix.superglobalmegacorp.com

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