xref: /original-bsd/lib/libcompat/4.1/tahoe/reset.s (revision c3e32dec)
1/*-
2 * Copyright (c) 1986, 1993
3 *	The Regents of the University of California.  All rights reserved.
4 *
5 * %sccs.include.proprietary.c%
6 */
7
8#if defined(LIBC_SCCS) && !defined(lint)
9	.asciz "@(#)reset.s	8.1 (Berkeley) 06/04/93"
10#endif /* LIBC_SCCS and not lint */
11
12/*
13 * C library -- reset, setexit
14 *
15 *	reset(x)
16 * will generate a "return" from
17 * the last call to
18 *	setexit()
19 * by restoring r2 - r12, fp
20 * and doing a return.
21 * The returned value is x; on the original
22 * call the returned value is 0.
23 *
24 * useful for going back to the main loop
25 * after a horrible error in a lowlevel
26 * routine.
27 */
28#include "DEFS.h"
29
30ENTRY(setexit, 0)
31	movab	setsav,r0
32	storer	$0x1ffc, (r0)
33	movl	(fp),44(r0)		# fp
34	moval	4(fp),48(r0)		# sp
35	movl	-8(fp),52(r0)		# pc
36	clrl	r0
37	ret
38
39ENTRY(reset, 0)
40	movl	4(fp),r0	# returned value
41	movab	setsav,r1
42	loadr	$0x1ffc,(r1)
43	movl	44(r1),fp
44	movl	48(r1),sp
45	jmp 	*52(r1)
46
47	.data
48setsav:	.space	14*4
49