Magellan Linux

Contents of /trunk/mkinitrd-magellan/klibc/usr/klibc/arch/s390/setjmp.S

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (show annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 9 months ago) by niro
File size: 1141 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 #
2 # arch/s390/setjmp.S
3 #
4 # setjmp/longjmp for the s390 architecture
5 #
6
7 .text
8 .align 4
9 .globl setjmp
10 .type setjmp, @function
11
12 #ifndef __s390x__
13
14 setjmp:
15 stm %r6,%r15,0(%r2) # save all general registers
16 std %f4,40(%r2) # save fp registers f4 and f6
17 std %f6,48(%r2)
18 lhi %r2,0 # return 0
19 br %r14
20
21 .size setjmp,.-setjmp
22
23 .text
24 .align 4
25 .globl longjmp
26 .type longjmp, @function
27 longjmp:
28 lr %r1,%r2 # jmp_buf
29 lr %r2,%r3 # return value
30 ld %f6,48(%r1) # restore all saved registers
31 ld %f4,40(%r1)
32 lm %r6,%r15,0(%r1)
33 br %r14 # return to restored address
34
35 .size longjmp,.-longjmp
36
37 #else
38
39 setjmp:
40 stmg %r6,%r15,0(%r2) # save all general registers
41 std %f1,80(%r2) # save fp registers f4 and f6
42 std %f3,88(%r2)
43 std %f5,96(%r2)
44 std %f7,104(%r2)
45 lghi %r2,0 # return 0
46 br %r14
47
48 .size setjmp,.-setjmp
49
50 .text
51 .align 4
52 .globl longjmp
53 .type longjmp, @function
54 longjmp:
55 lgr %r1,%r2 # jmp_buf
56 lgr %r2,%r3 # return value
57 ld %f7,104(%r1) # restore all saved registers
58 ld %f5,96(%r1)
59 ld %f3,88(%r1)
60 ld %f1,80(%r1)
61 lmg %r6,%r15,0(%r1)
62 br %r14 # return to restored address
63
64 .size longjmp,.-longjmp
65
66 #endif