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