chiark / gitweb /
volume_id: provide libvolume_id.a file
[elogind.git] / klibc / klibc / arch / mips / setjmp.S
1 #
2 # arch/mips/setjmp.S
3 #
4 # setjmp/longjmp for the MIPS architecture
5 #
6 # The jmp_buf is assumed to contain the following, in order:
7 #       s0..s7
8 #       gp
9 #       sp
10 #       s8
11 #       ra
12 #       f20..f31
13 #       fcr31
14 #
15
16 #include <machine/asm.h>
17         
18 LEAF(setjmp)
19         sw      s0,  0(a0)
20         sw      s1,  4(a0)
21         sw      s2,  8(a0)
22         sw      s3, 12(a0)
23         sw      s4, 16(a0)
24         sw      s5, 20(a0)
25         sw      s6, 24(a0)
26         sw      s7, 28(a0)
27         sw      gp, 32(a0)
28         sw      sp, 36(a0)
29         sw      s8, 40(a0)
30         sw      ra, 44(a0)
31         cfc1    t0,$31
32         swc1    $f20,48(a0)
33         swc1    $f21,52(a0)
34         swc1    $f22,56(a0)
35         swc1    $f23,60(a0)
36         swc1    $f24,64(a0)
37         swc1    $f25,68(a0)
38         swc1    $f26,72(a0)
39         swc1    $f27,76(a0)
40         swc1    $f28,80(a0)
41         swc1    $f29,84(a0)
42         swc1    $f30,88(a0)
43         swc1    $f31,92(a0)
44         sw      t0,96(a0)
45         move    v0,zero
46         jr      ra
47         
48         END(setjmp)
49
50 LEAF(longjmp)
51         lw      s0,  0(a0)
52         lw      s1,  4(a0)
53         lw      s2,  8(a0)
54         lw      s3, 12(a0)
55         lw      s4, 16(a0)
56         lw      s5, 20(a0)
57         lw      s6, 24(a0)
58         lw      s7, 28(a0)
59         lw      gp, 32(a0)
60         lw      sp, 36(a0)
61         lw      s8, 40(a0)
62         lw      ra, 44(a0)
63         lw      t0, 96(a0)
64         lwc1    $f20,48(a0)
65         lwc1    $f21,52(a0)
66         lwc1    $f22,56(a0)
67         lwc1    $f23,60(a0)
68         lwc1    $f24,64(a0)
69         lwc1    $f25,68(a0)
70         lwc1    $f26,72(a0)
71         lwc1    $f27,76(a0)
72         lwc1    $f28,80(a0)
73         lwc1    $f29,84(a0)
74         lwc1    $f30,88(a0)
75         lwc1    $f31,92(a0)
76         ctc1    t0,$31
77         move    v0,a1
78         jr      ra
79
80         END(longjmp)
81         
82