xref: /netbsd-src/lib/libc/compat/arch/powerpc/sys/compat_sigprocmask13.S (revision b1c86f5f087524e68db12794ee9c3e3da1ab17a0)
1/*	$NetBSD: compat_sigprocmask13.S,v 1.1 2006/02/18 00:21:28 matt Exp $	*/
2
3#include "SYS.h"
4
5WARN_REFERENCES(sigprocmask, \
6    "warning: reference to compatibility sigprocmask(); include <signal.h> for correct reference")
7
8/*
9 * sigprocmask(int how, sigset_t *set, sigset_t *oset)
10 */
11ENTRY(sigprocmask)
12	or.	%r4,%r4,%r4	# set == NULL?
13	li	%r6,1		# how = SIG_BLOCK
14	beq	1f
15	lwz	%r4,0(%r4)	# if not, replace it in r4 with *set
16	mr	%r6,%r3
171:
18	mr	%r3,%r6		# ... using sigprocmask(SIG_BLOCK)
19	li	%r0,SYS_compat_13_sigprocmask13
20	sc
21	bso	3f
22	or.	%r5,%r5,%r5	# check to see of oset requested
23	beq	2f		# if oset != NULL,
24	stw	%r3,0(%r5)	#    *oset = oldmask
252:
26	li	%r3,0
27	blr			# in any case, return 0
283:
29	b	PIC_PLT(_C_LABEL(__cerror))
30