xref: /csrg-svn/lib/libcompat/4.1/tahoe/reset.s (revision 29524)
1*29524Ssam/*
2*29524Ssam * Copyright (c) 1980 Regents of the University of California.
3*29524Ssam * All rights reserved.  The Berkeley software License Agreement
4*29524Ssam * specifies the terms and conditions for redistribution.
5*29524Ssam */
6*29524Ssam#ifdef LIBC_SCCS
7*29524Ssam_sccsid:.asciz	"@(#)reset.s	1.1 (Berkeley/CCI) 07/02/86"
8*29524Ssam#endif LIBC_SCCS
9*29524Ssam
10*29524Ssam/*
11*29524Ssam * C library -- reset, setexit
12*29524Ssam *
13*29524Ssam *	reset(x)
14*29524Ssam * will generate a "return" from
15*29524Ssam * the last call to
16*29524Ssam *	setexit()
17*29524Ssam * by restoring r2 - r12, fp
18*29524Ssam * and doing a return.
19*29524Ssam * The returned value is x; on the original
20*29524Ssam * call the returned value is 0.
21*29524Ssam *
22*29524Ssam * useful for going back to the main loop
23*29524Ssam * after a horrible error in a lowlevel
24*29524Ssam * routine.
25*29524Ssam */
26*29524Ssam#include "DEFS.h"
27*29524Ssam
28*29524SsamENTRY(setexit)
29*29524Ssam	movab	setsav,r0
30*29524Ssam	storer	$0x1ffc, (r0)
31*29524Ssam	movl	(fp),44(r0)		# fp
32*29524Ssam	moval	4(fp),48(r0)		# sp
33*29524Ssam	movl	-8(fp),52(r0)		# pc
34*29524Ssam	clrl	r0
35*29524Ssam	ret
36*29524Ssam
37*29524SsamENTRY(reset)
38*29524Ssam	movl	4(fp),r0	# returned value
39*29524Ssam	movab	setsav,r1
40*29524Ssam	loadr	$0x1ffc,(r1)
41*29524Ssam	movl	44(r1),fp
42*29524Ssam	movl	48(r1),sp
43*29524Ssam	jmp 	*52(r1)
44*29524Ssam
45*29524Ssam	.data
46*29524Ssamsetsav:	.space	14*4
47