]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - lib/libstand/powerpc/_setjmp.S
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / lib / libstand / powerpc / _setjmp.S
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) || defined(LIBC_RCS)) && !defined(lint)
6         .text
7         .asciz "$FreeBSD$"
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         mr      3,4
36         blr