xref: /csrg-svn/lib/libcompat/4.1/tahoe/reset.s (revision 29710)
129524Ssam/*
229524Ssam * Copyright (c) 1980 Regents of the University of California.
329524Ssam * All rights reserved.  The Berkeley software License Agreement
429524Ssam * specifies the terms and conditions for redistribution.
529524Ssam */
629524Ssam#ifdef LIBC_SCCS
7*29710Ssam_sccsid:.asciz	"@(#)reset.s	1.2 (Berkeley/CCI) 08/01/86"
829524Ssam#endif LIBC_SCCS
929524Ssam
1029524Ssam/*
1129524Ssam * C library -- reset, setexit
1229524Ssam *
1329524Ssam *	reset(x)
1429524Ssam * will generate a "return" from
1529524Ssam * the last call to
1629524Ssam *	setexit()
1729524Ssam * by restoring r2 - r12, fp
1829524Ssam * and doing a return.
1929524Ssam * The returned value is x; on the original
2029524Ssam * call the returned value is 0.
2129524Ssam *
2229524Ssam * useful for going back to the main loop
2329524Ssam * after a horrible error in a lowlevel
2429524Ssam * routine.
2529524Ssam */
2629524Ssam#include "DEFS.h"
2729524Ssam
28*29710SsamENTRY(setexit, 0)
2929524Ssam	movab	setsav,r0
3029524Ssam	storer	$0x1ffc, (r0)
3129524Ssam	movl	(fp),44(r0)		# fp
3229524Ssam	moval	4(fp),48(r0)		# sp
3329524Ssam	movl	-8(fp),52(r0)		# pc
3429524Ssam	clrl	r0
3529524Ssam	ret
3629524Ssam
37*29710SsamENTRY(reset, 0)
3829524Ssam	movl	4(fp),r0	# returned value
3929524Ssam	movab	setsav,r1
4029524Ssam	loadr	$0x1ffc,(r1)
4129524Ssam	movl	44(r1),fp
4229524Ssam	movl	48(r1),sp
4329524Ssam	jmp 	*52(r1)
4429524Ssam
4529524Ssam	.data
4629524Ssamsetsav:	.space	14*4
47