Home | History | Annotate | Line # | Download | only in gen
_setjmp.S revision 1.1
      1 /*	$NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $	*/
      2 
      3 #include <machine/asm.h>
      4 
      5 #if defined(LIBC_SCCS)
      6 	.text
      7 	.asciz "$NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $"
      8 #endif
      9 
     10 /*
     11  * C library -- _setjmp, _longjmp
     12  *
     13  *	_longjmp(a,v)
     14  * will generate a "return(v?v:1)" from the last call to
     15  *	_setjmp(a)
     16  * by restoring registers from the stack.
     17  * The previous signal state is NOT restored.
     18  */
     19 
     20 ENTRY(_setjmp)
     21 	mflr	11
     22 	mfcr	12
     23 	mr	10,1
     24 	mr	9,2
     25 	stmw	9,8(3)
     26 	li	3,0
     27 	blr
     28 
     29 ENTRY(_longjmp)
     30 	lmw	9,8(3)
     31 	mtlr	11
     32 	mtcr	12
     33 	mr	2,9
     34 	mr	1,10
     35 	or.	3,4,4
     36 	bnelr
     37 	li	3,1
     38 	blr
     39