xref: /csrg-svn/lib/libcompat/4.1/vax/reset.s (revision 13790)
1*13790Ssam/*
2*13790Ssam * @(#)reset.s	4.2 (Berkeley) 07/05/83
3*13790Ssam * C library -- reset, setexit
4*13790Ssam *
5*13790Ssam *	reset(x)
6*13790Ssam * will generate a "return" from
7*13790Ssam * the last call to
8*13790Ssam *	setexit()
9*13790Ssam * by restoring r6 - r12, ap, fp
10*13790Ssam * and doing a return.
11*13790Ssam * The returned value is x; on the original
12*13790Ssam * call the returned value is 0.
13*13790Ssam *
14*13790Ssam * useful for going back to the main loop
15*13790Ssam * after a horrible error in a lowlevel
16*13790Ssam * routine.
17*13790Ssam */
18*13790Ssam#include "DEFS.h"
192039Swnj
20*13790SsamENTRY(setexit)
212039Swnj	movab	setsav,r0
222039Swnj	movq	r6,(r0)+
232039Swnj	movq	r8,(r0)+
242039Swnj	movq	r10,(r0)+
252039Swnj	movq	8(fp),(r0)+		# ap, fp
262039Swnj	movab	4(ap),(r0)+		# sp
272039Swnj	movl	16(fp),(r0)		# pc
282039Swnj	clrl	r0
292039Swnj	ret
302039Swnj
31*13790SsamENTRY(reset)
322039Swnj	movl	4(ap),r0	# returned value
332039Swnj	movab	setsav,r1
342039Swnj	movq	(r1)+,r6
352039Swnj	movq	(r1)+,r8
362039Swnj	movq	(r1)+,r10
372039Swnj	movq	(r1)+,r12
382039Swnj	movl	(r1)+,sp
392039Swnj	jmp 	*(r1)
402039Swnj
412039Swnj	.data
422039Swnjsetsav:	.space	10*4
43