1 /* $FreeBSD: releng/6.2/sys/powerpc/powerpc/setjmp.S 99731 2002-07-10 12:26:17Z benno $ */
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
Cache object: ebf0735c108762c68463106f24e7787b
|