xref: /original-bsd/lib/libc/sparc/sys/sigprocmask.s (revision ce46c3ff)
1/*
2 * Copyright (c) 1992, 1993
3 *	The Regents of the University of California.  All rights reserved.
4 *
5 * This software was developed by the Computer Systems Engineering group
6 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7 * contributed to Berkeley.
8 *
9 * %sccs.include.redist.c%
10 *
11 * from: $Header: sigprocmask.s,v 1.1 91/07/06 13:06:01 torek Exp $
12 */
13
14#if defined(LIBC_SCCS) && !defined(lint)
15	.asciz "@(#)sigprocmask.s	8.1 (Berkeley) 06/04/93"
16#endif /* LIBC_SCCS and not lint */
17
18#include "SYS.h"
19
20/*
21 * sigprocmask(int how, sigset_t *set, sigset_t *oset)
22 */
23ENTRY(sigprocmask)
24	tst	%o1		! set == NULL?
25	bne,a	1f		! if not,
26	 ld	[%o1], %o1	!    replace it in %o1 with *set
27!	clr	%o1		! else block no signals ...
28	mov	1, %o0		! ... using sigprocmask(SIG_BLOCK)
291:
30	mov	SYS_sigprocmask, %g1
31	t	ST_SYSCALL
32	bcc	2f		! if success,
33	 tst	%o2		!    check to see if oset requested
34	ERROR()
352:
36	bne,a	3f		! if oset != NULL,
37	 st	%o0, [%o2]	!    *oset = oldmask
383:
39	retl			! in any case, return 0
40	 clr	%o0
41