]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - sys/powerpc/powerpc/setjmp.S
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / sys / powerpc / powerpc / setjmp.S
1 /*      $FreeBSD$  */
2 /*      from:   NetBSD: setjmp.S,v 1.1 1998/01/27 15:13:12 sakamoto Exp $  */
3 /*      from:   OpenBSD: setjmp.S,v 1.2 1996/12/28 06:22:18 rahnds Exp  */
4 /* kernel version of this file, does not have signal goop */
5 /* int setjmp(jmp_buf env) */
6
7 #define JMP_r1  0x04
8 #define JMP_r14 0x08
9 #define JMP_r15 0x0c
10 #define JMP_r16 0x10
11 #define JMP_r17 0x14
12 #define JMP_r18 0x18
13 #define JMP_r19 0x1c
14 #define JMP_r20 0x20
15 #define JMP_r21 0x24
16 #define JMP_r22 0x28
17 #define JMP_r23 0x2c
18 #define JMP_r24 0x30
19 #define JMP_r25 0x34
20 #define JMP_r26 0x38
21 #define JMP_r27 0x3c
22 #define JMP_r28 0x40
23 #define JMP_r29 0x44
24 #define JMP_r30 0x48
25 #define JMP_r31 0x4c
26 #define JMP_lr  0x50
27 #define JMP_cr  0x54
28 #define JMP_ctr 0x58
29 #define JMP_xer 0x5c
30 #define JMP_sig 0x60
31
32
33 .globl setjmp
34 setjmp:
35         stw 31, JMP_r31(3)
36         /* r1, r14-r30 */
37         stw 1,  JMP_r1 (3)
38         stw 14, JMP_r14(3)
39         stw 15, JMP_r15(3)
40         stw 16, JMP_r16(3)
41         stw 17, JMP_r17(3)
42         stw 18, JMP_r18(3)
43         stw 19, JMP_r19(3)
44         stw 20, JMP_r20(3)
45         stw 21, JMP_r21(3)
46         stw 22, JMP_r22(3)
47         stw 23, JMP_r23(3)
48         stw 24, JMP_r24(3)
49         stw 25, JMP_r25(3)
50         stw 26, JMP_r26(3)
51         stw 27, JMP_r27(3)
52         stw 28, JMP_r28(3)
53         stw 29, JMP_r29(3)
54         stw 30, JMP_r30(3)
55         /* cr, lr, ctr, xer */
56         mfcr 0
57         stw 0, JMP_cr(3)
58         mflr 0
59         stw 0, JMP_lr(3)
60         mfctr 0
61         stw 0, JMP_ctr(3)
62         mfxer 0
63         stw 0, JMP_xer(3)
64         /* f14-f31, fpscr */
65         li 3, 0
66         blr
67
68
69 .extern sigsetmask
70 .globl longjmp
71 longjmp:
72         lwz 31, JMP_r31(3)
73         /* r1, r14-r30 */
74         lwz 1,  JMP_r1 (3)
75         lwz 14, JMP_r14(3)
76         lwz 15, JMP_r15(3)
77         lwz 16, JMP_r16(3)
78         lwz 17, JMP_r17(3)
79         lwz 18, JMP_r18(3)
80         lwz 19, JMP_r19(3)
81         lwz 20, JMP_r20(3)
82         lwz 21, JMP_r21(3)
83         lwz 22, JMP_r22(3)
84         lwz 23, JMP_r23(3)
85         lwz 24, JMP_r24(3)
86         lwz 25, JMP_r25(3)
87         lwz 26, JMP_r26(3)
88         lwz 27, JMP_r27(3)
89         lwz 28, JMP_r28(3)
90         lwz 29, JMP_r29(3)
91         lwz 30, JMP_r30(3)
92         /* cr, lr, ctr, xer */
93         lwz 0, JMP_cr(3)
94         mtcr 0
95         lwz 0, JMP_lr(3)
96         mtlr 0
97         lwz 0, JMP_ctr(3)
98         mtctr 0
99         lwz 0, JMP_xer(3)
100         mtxer 0
101         /* f14-f31, fpscr */
102         mr 3, 4
103         blr