|
|
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.