setjmp.S revision 99731
1/*	$FreeBSD: head/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
34setjmp:
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
71longjmp:
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
104