]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/l4re-core/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/nios2/bsd-setjmp.S
Update
[l4.git] / l4 / pkg / l4re-core / uclibc / lib / contrib / uclibc / libc / sysdeps / linux / nios2 / bsd-setjmp.S
1 /*
2  * libc/sysdeps/linux/nios2/bsd-setjmp.S
3  *
4  *  Copyright (C) 2004,05,06  Microtronix Datacom Ltd
5  *
6  * This file is subject to the terms and conditions of the GNU Lesser
7  * General Public License.  See the file COPYING.LIB in the main
8  * directory of this archive for more details.
9  * 
10  * Written by Wentao Xu <wentao@microtronix.com>
11  * 
12  */
13
14
15 #include <features.h>
16 #include <jmpbuf-offsets.h>
17
18    .globl setjmp
19    .type  setjmp,@function
20    .balign 4
21
22 setjmp:
23     stw     r16, (JB_REGS+ 0)(r4)
24     stw     r17, (JB_REGS+ 4)(r4)
25     stw     r18, (JB_REGS+ 8)(r4)
26     stw     r19, (JB_REGS+12)(r4)
27     stw     r20, (JB_REGS+16)(r4)
28     stw     r21, (JB_REGS+20)(r4)
29     stw     r22, (JB_REGS+24)(r4)
30     stw     r23, (JB_REGS+28)(r4)
31     
32     stw     ra, JB_PC(r4)
33     stw     sp, JB_SP(r4)
34     stw     fp, JB_FP(r4)
35     stw     gp, JB_GP(r4)
36     
37 #ifdef __UCLIBC_HAS_FPU__
38     SAVE_FPU r4 JB_FPREGS
39 #endif
40
41     movui r5, 1
42 #ifdef __PIC__
43     /* just pray 16 bit offset is enough */
44     br __sigjmp_save
45 #else
46     movhi r8, %hi(__sigjmp_save)
47     ori r8, r8, %lo(__sigjmp_save)    
48     jmp r8
49 #endif
50
51