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