Remove building with NOCRYPTO option
[minix3.git] / lib / libc / arch / or1k / gen / __setjmp14.S
blob5f4e97bc1747dc2244e14d78b5128cb30bf31ebb
1 /*      $NetBSD: __setjmp14.S,v 1.1 2014/09/03 19:34:25 matt Exp $      */
3 #include "SYS.h"
4 #include "assym.h"
6 #if defined(LIBC_SCCS)
7 __RCSID("$NetBSD: __setjmp14.S,v 1.1 2014/09/03 19:34:25 matt Exp $")
8 #endif
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 restored.
18  */
20 ENTRY(__setjmp14)
21         l.sw    JB_PC(r3), lr           /* save return address */
22         l.sw    JB_LR(r3), lr           /* save return address */
23         l.sw    JB_SP(r3), r1           /* save stack pointer */
24         l.sw    JB_FP(r3), r2           /* save frame pointer */
25         l.sw    JB_R10(r3), r10         /* save callee saved register */
26         l.sw    JB_R14(r3), r14         /* save callee saved register */
27         l.sw    JB_R16(r3), r16         /* save callee saved register */
28         l.sw    JB_R18(r3), r18         /* save callee saved register */
29         l.sw    JB_R20(r3), r20         /* save callee saved register */
30         l.sw    JB_R22(r3), r22         /* save callee saved register */
31         l.sw    JB_R24(r3), r24         /* save callee saved register */
32         l.sw    JB_R26(r3), r26         /* save callee saved register */
33         l.sw    JB_R28(r3), r28         /* save callee saved register */
34         l.sw    JB_R30(r3), r30         /* save callee saved register */
35         l.addi  r4, r0, 1
36         l.sw    JB_MAGIC(r3), r4        /* note we saved sigmask */
37         l.addi  r5, r3, JB_SIGMASK      # &sigmask
38         l.xor   r4, r4, r4
39         l.addi  r3, r0, SIG_BLOCK
40         _DOSYSCALL(__sigprocmask14)     # assume no error       XXX
41         l.xor   r11, r11, r11
42         l.jr    lr
43         l.nop
44 END(__setjmp14)
46 ENTRY(__longjmp14)
47         l.lwz   lr, JB_LR(r3)           /* get return address */
48         l.lwz   r1, JB_SP(r3)           /* get stack pointer */
49         l.lwz   r2, JB_FP(r3)           /* get frame pointer */
50         l.lwz   r10, JB_R10(r3)         /* get callee saved register */
51         l.lwz   r14, JB_R14(r3)         /* get callee saved register */
52         l.lwz   r16, JB_R16(r3)         /* get callee saved register */
53         l.lwz   r18, JB_R18(r3)         /* get callee saved register */
54         l.lwz   r20, JB_R20(r3)         /* get callee saved register */
55         l.lwz   r22, JB_R22(r3)         /* get callee saved register */
56         l.lwz   r24, JB_R24(r3)         /* get callee saved register */
57         l.lwz   r26, JB_R26(r3)         /* get callee saved register */
58         l.lwz   r28, JB_R28(r3)         /* get callee saved register */
59         l.lwz   r30, JB_R30(r3)         /* get callee saved register */
60         l.ori   r11, r4, 0
61         l.xor   r5, r5, r5
62         l.addi  r4, r3, JB_SIGMASK      # &sigmask
63         l.addi  r3, r0, SIG_SETMASK
64         _DOSYSCALL(__sigprocmask14)     # assume no error       XXX
65         l.addi  r6, r0, 1
66         l.sfeqi r11, 0
67         l.cmov  r11, r6, r11
68         l.jr    lr
69         l.nop
70 END(__longjmp14)