riscv32: add setjmp/longjmp and sigreturn
[musl.git] / src / setjmp / riscv32 / setjmp.S
blob8a75cf55dc32b7443083c86a964032f18da1d8b6
1 .global __setjmp
2 .global _setjmp
3 .global setjmp
4 .type __setjmp, %function
5 .type _setjmp,  %function
6 .type setjmp,   %function
7 __setjmp:
8 _setjmp:
9 setjmp:
10         sw s0,    0(a0)
11         sw s1,    4(a0)
12         sw s2,    8(a0)
13         sw s3,    12(a0)
14         sw s4,    16(a0)
15         sw s5,    20(a0)
16         sw s6,    24(a0)
17         sw s7,    28(a0)
18         sw s8,    32(a0)
19         sw s9,    36(a0)
20         sw s10,   40(a0)
21         sw s11,   44(a0)
22         sw sp,    48(a0)
23         sw ra,    52(a0)
25 #ifndef __riscv_float_abi_soft
26         fsd fs0,  56(a0)
27         fsd fs1,  64(a0)
28         fsd fs2,  72(a0)
29         fsd fs3,  80(a0)
30         fsd fs4,  88(a0)
31         fsd fs5,  96(a0)
32         fsd fs6,  104(a0)
33         fsd fs7,  112(a0)
34         fsd fs8,  120(a0)
35         fsd fs9,  128(a0)
36         fsd fs10, 136(a0)
37         fsd fs11, 144(a0)
38 #endif
40         li a0, 0
41         ret