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