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