|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.