xref: /minix3/lib/libc/compat/arch/powerpc/sys/compat_sigprocmask13.S (revision 2fe8fb192fe7e8720e3e7a77f928da545e872a6a)
1*2fe8fb19SBen Gras/*	$NetBSD: compat_sigprocmask13.S,v 1.2 2011/01/15 07:31:13 matt Exp $	*/
2*2fe8fb19SBen Gras
3*2fe8fb19SBen Gras#include "SYS.h"
4*2fe8fb19SBen Gras#include "assym.h"
5*2fe8fb19SBen Gras
6*2fe8fb19SBen Gras#if defined(LIBC_SCCS)
7*2fe8fb19SBen Gras__RCSID("$NetBSD: compat_sigprocmask13.S,v 1.2 2011/01/15 07:31:13 matt Exp $")
8*2fe8fb19SBen Gras#endif
9*2fe8fb19SBen Gras
10*2fe8fb19SBen GrasWARN_REFERENCES(sigprocmask, \
11*2fe8fb19SBen Gras    "warning: reference to compatibility sigprocmask(); include <signal.h> for correct reference")
12*2fe8fb19SBen Gras
13*2fe8fb19SBen Gras/*
14*2fe8fb19SBen Gras * sigprocmask(int how, sigset_t *set, sigset_t *oset)
15*2fe8fb19SBen Gras */
16*2fe8fb19SBen GrasENTRY(sigprocmask)
17*2fe8fb19SBen Gras	or.	%r4,%r4,%r4	# set == NULL?
18*2fe8fb19SBen Gras	li	%r6,SIG_BLOCK
19*2fe8fb19SBen Gras	beq	1f
20*2fe8fb19SBen Gras	lwz	%r4,0(%r4)	# if not, replace it in r4 with *set
21*2fe8fb19SBen Gras	mr	%r6,%r3
22*2fe8fb19SBen Gras1:
23*2fe8fb19SBen Gras	mr	%r3,%r6		# ... using sigprocmask(SIG_BLOCK)
24*2fe8fb19SBen Gras	_DOSYSCALL(compat_13_sigprocmask13)
25*2fe8fb19SBen Gras	bso	3f
26*2fe8fb19SBen Gras	or.	%r5,%r5,%r5	# check to see of oset requested
27*2fe8fb19SBen Gras	beq	2f		# if oset != NULL,
28*2fe8fb19SBen Gras	stw	%r3,0(%r5)	#    *oset = oldmask
29*2fe8fb19SBen Gras2:
30*2fe8fb19SBen Gras	li	%r3,0
31*2fe8fb19SBen Gras	blr			# in any case, return 0
32*2fe8fb19SBen Gras3:
33*2fe8fb19SBen Gras	b	_C_LABEL(__cerror)
34*2fe8fb19SBen GrasEND(sigprocmask)
35