Architecture-specific setjump()/longjmp() bits for the PowerPC

needed by the loader.

Submitted by:	Benno Rice <benno@jeamland.net>
Obtained from:	NetBSD (Wolfgang Solfrank <ws@@tools.de>)
This commit is contained in:
David E. O'Brien 2000-10-10 13:11:47 +00:00
parent 29d26e2f27
commit f308707531

View File

@ -0,0 +1,39 @@
/* $NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $ */
/* $FreeBSD$ */
#include <machine/asm.h>
#if defined(LIBC_SCCS)
.text
.asciz "$NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $"
#endif
/*
* C library -- _setjmp, _longjmp
*
* _longjmp(a,v)
* will generate a "return(v?v:1)" from the last call to
* _setjmp(a)
* by restoring registers from the stack.
* The previous signal state is NOT restored.
*/
ENTRY(_setjmp)
mflr 11
mfcr 12
mr 10,1
mr 9,2
stmw 9,8(3)
li 3,0
blr
ENTRY(_longjmp)
lmw 9,8(3)
mtlr 11
mtcr 12
mr 2,9
mr 1,10
or. 3,4,4
bnelr
li 3,1
blr