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