1181624Skmacy/* $OpenBSD: sigprocmask.S,v 1.8 2023/12/10 16:45:51 deraadt Exp $ */ 2181624Skmacy/*- 3181624Skmacy * Copyright (c) 1991, 1993 4181624Skmacy * The Regents of the University of California. All rights reserved. 5181624Skmacy * 6181624Skmacy * This code is derived from software contributed to Berkeley by 7181624Skmacy * Ralph Campbell. 8181624Skmacy * 9181624Skmacy * Redistribution and use in source and binary forms, with or without 10181624Skmacy * modification, are permitted provided that the following conditions 11181624Skmacy * are met: 12181624Skmacy * 1. Redistributions of source code must retain the above copyright 13181624Skmacy * notice, this list of conditions and the following disclaimer. 14181624Skmacy * 2. Redistributions in binary form must reproduce the above copyright 15181624Skmacy * notice, this list of conditions and the following disclaimer in the 16181624Skmacy * documentation and/or other materials provided with the distribution. 17181624Skmacy * 3. Neither the name of the University nor the names of its contributors 18181624Skmacy * may be used to endorse or promote products derived from this software 19181624Skmacy * without specific prior written permission. 20181624Skmacy * 21181624Skmacy * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22181624Skmacy * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23181624Skmacy * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24181624Skmacy * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25181624Skmacy * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26181624Skmacy * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27181624Skmacy * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28181624Skmacy * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29181624Skmacy * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30181624Skmacy * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31181624Skmacy * SUCH DAMAGE. 32181624Skmacy */ 33181624Skmacy 34181624Skmacy#include "SYS.h" 35181624Skmacy 36181624SkmacyFRAMESZ= MKFSIZ(1,1) 37181624SkmacyGPOFF= FRAMESZ-2*REGSZ 38181624Skmacy 39214077SgibbsSYSLEAF_HIDDEN(sigprocmask, FRAMESZ) 40214077Sgibbs PTR_SUBU sp, FRAMESZ 41214077Sgibbs SETUP_GP64(GPOFF, _HIDDEN(sigprocmask)) 42181624Skmacy .set reorder 43181624Skmacy bne a1, zero, .Lgotptr # if new sigset pointer not null 44181624Skmacy li a0, 1 # how = SIG_BLOCK 45181624Skmacy b .Ldoit # mask = zero 46181624Skmacy.Lgotptr: 47181624Skmacy lw a1, 0(a1) # indirect to new mask arg 48181624Skmacy.Ldoit: 49181624Skmacy li v0, SYS_sigprocmask 50181624Skmacy99: syscall 51181624Skmacy PINSYSCALL(SYS_sigprocmask, 99b) 52181624Skmacy bne a3, zero, .Lerr 53181624Skmacy beq a2, zero, .Lout # test if old mask requested 54181624Skmacy sw v0, 0(a2) # store old mask 55214077Sgibbs.Lout: 56214077Sgibbs move v0, zero 57214077Sgibbs RESTORE_GP64 58181624Skmacy PTR_ADDU sp, FRAMESZ 59181624Skmacy j ra 60181624Skmacy.Lerr: 61181624Skmacy LA t9, CERROR 62181624Skmacy RESTORE_GP64 63181624Skmacy PTR_ADDU sp, FRAMESZ 64181624Skmacy jr t9 65214077SgibbsSYSCALL_END_HIDDEN(sigprocmask) 66214077Sgibbs