xref: /netbsd-src/lib/libc/arch/powerpc64/gen/__setjmp14.S (revision abb0f93cd77b67f080613360c65701f85e5f5cfe)
1/*	$NetBSD: __setjmp14.S,v 1.2 2009/03/08 18:57:12 he Exp $	*/
2
3#include <sys/syscall.h>
4
5#include <machine/asm.h>
6
7#if defined(LIBC_SCCS)
8	.text
9	.asciz "$NetBSD: __setjmp14.S,v 1.2 2009/03/08 18:57:12 he Exp $"
10#endif
11
12/*
13 * C library -- _setjmp, _longjmp
14 *
15 *	longjmp(a,v)
16 * will generate a "return(v?v:1)" from the last call to
17 *	setjmp(a)
18 * by restoring registers from the stack.
19 * The previous signal state is restored.
20 */
21
22ENTRY(__setjmp14)
23	mr	%r6,%r3
24	li	%r3,1			# SIG_BLOCK
25	li	%r4,0
26	addi	%r5,%r6,100		# &sigmask
27	li	%r0,SYS___sigprocmask14
28	sc				# assume no error	XXX
29	mflr	%r11
30	mfcr	%r12
31	mr	%r10,%r1
32	mr	%r9,%r2
33
34	std	%r8,8(%r6)		# save r8-r31
35	std	%r9,16(%r6)
36	std	%r10,24(%r6)
37	std	%r11,32(%r6)
38	std	%r12,40(%r6)
39	std	%r13,48(%r6)
40	std	%r14,56(%r6)
41	std	%r15,64(%r6)
42	std	%r16,72(%r6)
43	std	%r17,80(%r6)
44	std	%r18,88(%r6)
45	std	%r19,96(%r6)
46	std	%r20,104(%r6)
47	std	%r21,112(%r6)
48	std	%r22,120(%r6)
49	std	%r23,128(%r6)
50	std	%r24,136(%r6)
51	std	%r25,144(%r6)
52	std	%r26,152(%r6)
53	std	%r27,160(%r6)
54	std	%r28,168(%r6)
55	std	%r29,176(%r6)
56	std	%r30,184(%r6)
57	std	%r31,192(%r6)
58
59	li	%r3,0
60	blr
61
62ENTRY(__longjmp14)
63	ld	%r8,8(%r6)		# load r8-r31
64	ld	%r9,16(%r6)
65	ld	%r10,24(%r6)
66	ld	%r11,32(%r6)
67	ld	%r12,40(%r6)
68	ld	%r13,48(%r6)
69	ld	%r14,56(%r6)
70	ld	%r15,64(%r6)
71	ld	%r16,72(%r6)
72	ld	%r17,80(%r6)
73	ld	%r18,88(%r6)
74	ld	%r19,96(%r6)
75	ld	%r20,104(%r6)
76	ld	%r21,112(%r6)
77	ld	%r22,120(%r6)
78	ld	%r23,128(%r6)
79	ld	%r24,136(%r6)
80	ld	%r25,144(%r6)
81	ld	%r26,152(%r6)
82	ld	%r27,160(%r6)
83	ld	%r28,168(%r6)
84	ld	%r29,176(%r6)
85	ld	%r30,184(%r6)
86	ld	%r31,192(%r6)
87
88	mr	%r6,%r4
89	mtlr	%r11
90	mtcr	%r12
91	mr	%r2,%r9
92	mr	%r1,%r10
93	addi	%r4,%r3,100		# &sigmask
94	li	%r3,3			# SIG_SETMASK
95	li	%r5,0
96	li	%r0,SYS___sigprocmask14
97	sc				# assume no error	XXX
98	or.	%r3,%r6,%r6
99	bnelr
100	li	%r3,1
101	blr
102