Fix mdoc(7)/man(7) mix up.
[netbsd-mini2440.git] / lib / libc / compat / arch / powerpc / gen / compat_setjmp.S
blobee8ac2bde1fee2898efbac353dd986459b64b62e
1 /*      $NetBSD: setjmp.S,v 1.4 2002/07/30 06:07:57 matt Exp $  */
3 #include <sys/syscall.h>
5 #include <machine/asm.h>
7 #if defined(LIBC_SCCS)
8         .text
9         .asciz "$NetBSD: setjmp.S,v 1.4 2002/07/30 06:07:57 matt Exp $"
10 #endif
13  * C library -- _setjmp, _longjmp
14  *
15  *      longjmp(a,v)
16  * will generate a "return(v?v:1)" from the last call to
17  *      setjmp(a)
18  * by restoring registers from the stack.
19  * The previous signal state is restored.
20  */
22 ENTRY(setjmp)
23         mr      %r6,%r3
24         li      %r3,1                   # SIG_BLOCK
25         li      %r4,0
26         li      %r0,SYS_compat_13_sigprocmask13
27         sc                              # assume no error       XXX
28         mflr    %r11
29         mfcr    %r12
30         mr      %r10,%r1
31         mr      %r9,%r2
32         mr      %r8,%r3
33         stmw    %r8,4(%r6)
34         li      %r3,0
35         blr
37 ENTRY(longjmp)
38         lmw     %r8,4(%r3)
39         mr      %r6,%r4
40         mtlr    %r11
41         mtcr    %r12
42         mr      %r2,%r9
43         mr      %r1,%r10
44         mr      %r4,%r8
45         li      %r3,3                   # SIG_SETMASK
46         li      %r0,SYS_compat_13_sigprocmask13
47         sc                              # assume no error       XXX
48         or.     %r3,%r6,%r6
49         bnelr
50         li      %r3,1
51         blr