|
|
1.1 root 1: /*
2: * @(#)reset.s 4.2 (Berkeley) 7/5/83
3: * C library -- reset, setexit
4: *
5: * reset(x)
6: * will generate a "return" from
7: * the last call to
8: * setexit()
9: * by restoring r6 - r12, ap, fp
10: * and doing a return.
11: * The returned value is x; on the original
12: * call the returned value is 0.
13: *
14: * useful for going back to the main loop
15: * after a horrible error in a lowlevel
16: * routine.
17: */
18: #include "DEFS.h"
19:
20: ENTRY(setexit)
21: movab setsav,r0
22: movq r6,(r0)+
23: movq r8,(r0)+
24: movq r10,(r0)+
25: movq 8(fp),(r0)+ # ap, fp
26: movab 4(ap),(r0)+ # sp
27: movl 16(fp),(r0) # pc
28: clrl r0
29: ret
30:
31: ENTRY(reset)
32: movl 4(ap),r0 # returned value
33: movab setsav,r1
34: movq (r1)+,r6
35: movq (r1)+,r8
36: movq (r1)+,r10
37: movq (r1)+,r12
38: movl (r1)+,sp
39: jmp *(r1)
40:
41: .data
42: setsav: .space 10*4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.