_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