|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6: #ifdef LIBC_SCCS
7: _sccsid:.asciz "@(#)reset.c 1.2 (Berkeley/CCI) 8/1/86"
8: #endif LIBC_SCCS
9:
10: /*
11: * C library -- reset, setexit
12: *
13: * reset(x)
14: * will generate a "return" from
15: * the last call to
16: * setexit()
17: * by restoring r2 - r12, fp
18: * and doing a return.
19: * The returned value is x; on the original
20: * call the returned value is 0.
21: *
22: * useful for going back to the main loop
23: * after a horrible error in a lowlevel
24: * routine.
25: */
26: #include "DEFS.h"
27:
28: ENTRY(setexit, 0)
29: movab setsav,r0
30: storer $0x1ffc, (r0)
31: movl (fp),44(r0) # fp
32: moval 4(fp),48(r0) # sp
33: movl -8(fp),52(r0) # pc
34: clrl r0
35: ret
36:
37: ENTRY(reset, 0)
38: movl 4(fp),r0 # returned value
39: movab setsav,r1
40: loadr $0x1ffc,(r1)
41: movl 44(r1),fp
42: movl 48(r1),sp
43: jmp *52(r1)
44:
45: .data
46: setsav: .space 14*4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.