chiark / gitweb /
[PATCH] klibc: version 0.214
[elogind.git] / klibc / klibc / arch / s390x / setjmp.S
1 #
2 # arch/s390x/setjmp.S
3 #
4 # setjmp/longjmp for the s390x architecture
5 #
6
7         .text
8         .align 4
9         .globl setjmp
10         .type setjmp, @function
11 setjmp:
12         stmg    %r6,%r15,0(%r2)         # save all general registers
13         std     %f1,80(%r2)             # save fp registers f4 and f6
14         std     %f3,88(%r2)
15         std     %f5,96(%r2)
16         std     %f7,104(%r2)
17         lghi    %r2,0                   # return 0
18         br      %r14
19
20         .size setjmp,.-setjmp
21
22         .text
23         .align 4
24         .globl longjmp
25         .type longjmp, @function
26 longjmp:
27         lgr     %r1,%r2                 # jmp_buf
28         lgr     %r2,%r3                 # return value
29         ld      %f7,104(%r1)            # restore all saved registers
30         ld      %f5,96(%r1)
31         ld      %f3,88(%r1)
32         ld      %f1,80(%r1)
33         lmg     %r6,%r15,0(%r1)
34         br      %r14                    # return to restored address
35
36         .size longjmp,.-longjmp