xref: /openbsd/lib/libc/arch/powerpc/sys/sigsuspend.S (revision 83762a71)
1*83762a71Sderaadt/* $OpenBSD: sigsuspend.S,v 1.8 2023/12/10 16:45:51 deraadt Exp $ */
22352eb10Sdrahn
32352eb10Sdrahn/*
42352eb10Sdrahn * Copyright (c) 1996 Dale Rahn
52352eb10Sdrahn *
62352eb10Sdrahn * Redistribution and use in source and binary forms, with or without
72352eb10Sdrahn * modification, are permitted provided that the following conditions
82352eb10Sdrahn * are met:
92352eb10Sdrahn * 1. Redistributions of source code must retain the above copyright
102352eb10Sdrahn *    notice, this list of conditions and the following disclaimer.
112352eb10Sdrahn * 2. Redistributions in binary form must reproduce the above copyright
122352eb10Sdrahn *    notice, this list of conditions and the following disclaimer in the
132352eb10Sdrahn *    documentation and/or other materials provided with the distribution.
142352eb10Sdrahn *
152352eb10Sdrahn * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
162352eb10Sdrahn * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
172352eb10Sdrahn * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
182352eb10Sdrahn * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
192352eb10Sdrahn * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
202352eb10Sdrahn * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
212352eb10Sdrahn * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
222352eb10Sdrahn * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
232352eb10Sdrahn * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
242352eb10Sdrahn * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
252352eb10Sdrahn * SUCH DAMAGE.
262352eb10Sdrahn */
272352eb10Sdrahn
28a4afd6daSrahnds/* int sigsuspend(int *mask) */
29a4afd6daSrahnds
30a4afd6daSrahnds#include "SYS.h"
31a4afd6daSrahnds
32a4afd6daSrahnds	.text
33d2c5a474SgkoehlerSYSENTRY_HIDDEN(sigsuspend)
3415572fcfSgkoehler	RETGUARD_SETUP(sigsuspend, %r11, %r12)
35d2c5a474Sgkoehler	li	%r0, SYS_sigsuspend
36d2c5a474Sgkoehler
37d2c5a474Sgkoehler	lwz	%r3, 0(%r3)		/* load the mask */
38*83762a71Sderaadt99:	sc
39*83762a71Sderaadt	PINSYSCALL(SYS_sigsuspend, 99b)
40d2c5a474Sgkoehler
41d2c5a474Sgkoehler	cmpwi	%r0, 0
42d2c5a474Sgkoehler	beq+	.L_ret
43d2c5a474Sgkoehler	stw	%r0, R2_OFFSET_ERRNO(2)
44d2c5a474Sgkoehler	li	%r3, -1
45d2c5a474Sgkoehler.L_ret:
4615572fcfSgkoehler	RETGUARD_CHECK(sigsuspend, %r11, %r12)
47d2c5a474Sgkoehler	blr
48fe38b55cSguentherSYSCALL_END_HIDDEN(sigsuspend)
49