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 10 WARN_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 */ 16 ENTRY(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 22 1: 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 29 2: 30 li %r3,0 31 blr # in any case, return 0 32 3: 33 b _C_LABEL(__cerror) 34 END(sigprocmask) 35