1/*- 2 * SPDX-License-Identifier: BSD-2-Clause 3 * 4 * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com> 5 * All rights reserved. 6 * 7 * Portions of this software were developed by SRI International and the 8 * University of Cambridge Computer Laboratory under DARPA/AFRL contract 9 * FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme. 10 * 11 * Portions of this software were developed by the University of Cambridge 12 * Computer Laboratory as part of the CTSRD Project, with support from the 13 * UK Higher Education Innovation Fund (HEIF). 14 * 15 * Redistribution and use in source and binary forms, with or without 16 * modification, are permitted provided that the following conditions 17 * are met: 18 * 1. Redistributions of source code must retain the above copyright 19 * notice, this list of conditions and the following disclaimer. 20 * 2. Redistributions in binary form must reproduce the above copyright 21 * notice, this list of conditions and the following disclaimer in the 22 * documentation and/or other materials provided with the distribution. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 */ 36 37#include "assym.inc" 38 39#include <sys/syscall.h> 40 41#include <machine/asm.h> 42 43/* 44 * This code is copied to the user's stack for returning from signal handlers 45 * (see sendsig() and sigreturn()). We have to compute the address of the 46 * sigcontext struct for the sigreturn call. 47 */ 48ENTRY(sigcode) 49 mv a0, sp 50 addi a0, a0, SF_UC 51 521: 53 li t0, SYS_sigreturn 54 ecall 55 56 /* sigreturn failed, exit */ 57 li t0, SYS_exit 58 ecall 59 60 j 1b 61END(sigcode) 62 63 /* This may be copied to the stack, keep it 16-byte aligned */ 64 .align 3 65esigcode: 66 67 .data 68 .align 3 69 .global szsigcode 70szsigcode: 71 .quad esigcode - sigcode 72