chiark / gitweb /
5d915f2dbea8ad1f0051f5fa2c563f5fd21e1aab
[elogind.git] / klibc / klibc / arch / alpha / setjmp.S
1 #
2 # setjmp.S
3 #
4
5 #
6 # The jmp_buf looks like:
7 #
8 #       s0..5
9 #       fp
10 #       ra
11 #       gp
12 #       sp
13 #
14
15 #include <machine/asm.h>
16         
17         .text
18         .align  3
19         .type   setjmp,@function
20         .ent    setjmp, 0
21         .globl  setjmp
22 setjmp:
23         lda     v0,   0(zero)
24         stq     s0,   0(a0)
25         stq     s1,   8(a0)
26         stq     s2,  16(a0)
27         stq     s3,  24(a0)
28         stq     s4,  32(a0)
29         stq     s5,  40(a0)
30         stq     fp,  48(a0)
31         stq     ra,  56(a0)
32         stq     gp,  64(a0)
33         stq     sp,  72(a0)
34         stt     $f2,  80(a0)
35         stt     $f3,  88(a0)
36         stt     $f4,  96(a0)
37         stt     $f5, 104(a0)
38         stt     $f6, 112(a0)
39         stt     $f7, 120(a0)
40         stt     $f8, 128(a0)
41         stt     $f9, 136(a0)
42         ret     zero,(ra),1
43
44         .size setjmp,.-setjmp
45         .end setjmp
46
47         .type   longjmp,@function
48         .ent    longjmp, 0
49         .globl  longjmp
50 longjmp:
51         mov     a1, v0
52         ldq     s0,   0(a0)
53         ldq     s1,   8(a0)
54         ldq     s2,  16(a0)
55         ldq     s3,  24(a0)
56         ldq     s4,  32(a0)
57         ldq     s5,  40(a0)
58         ldq     fp,  48(a0)
59         ldq     ra,  56(a0)
60         ldq     gp,  64(a0)
61         ldq     sp,  72(a0)
62         ldt     $f2,  80(a0)
63         ldt     $f3,  88(a0)
64         ldt     $f4,  96(a0)
65         ldt     $f5, 104(a0)
66         ldt     $f6, 112(a0)
67         ldt     $f7, 120(a0)
68         ldt     $f8, 128(a0)
69         ldt     $f9, 136(a0)
70         /* We're bound to get a mispredict here, but at least give us
71            a chance to get the return stack back in sync... */
72         ret     zero,(ra),1
73
74         .size longjmp,.-longjmp
75         .end longjmp
76
77