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