1/* $NetBSD: linux_sigcode.s,v 1.4 2011/02/12 16:30:42 matt Exp $ */ 2 3/*- 4 * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, 9 * NASA Ames Research Center. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in the 18 * documentation and/or other materials provided with the distribution. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33/* 34 * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. 35 * All rights reserved. 36 * 37 * Author: Chris G. Demetriou 38 * 39 * Permission to use, copy, modify and distribute this software and 40 * its documentation is hereby granted, provided that both the copyright 41 * notice and this permission notice appear in all copies of the 42 * software, derivative works or modified versions, and any portions 43 * thereof, and that both notices appear in supporting documentation. 44 * 45 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 46 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 47 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 48 * 49 * Carnegie Mellon requests users of this software to return to 50 * 51 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 52 * School of Computer Science 53 * Carnegie Mellon University 54 * Pittsburgh PA 15213-3890 55 * 56 * any improvements or extensions that they make and grant Carnegie the 57 * rights to redistribute these changes. 58 */ 59 60.stabs __FILE__,100,0,0,kernel_text 61 62#include <compat/linux/linux_syscall.h> 63 64#include <machine/asm.h> 65 66__KERNEL_RCSID(0, "$NetBSD: linux_sigcode.s,v 1.4 2011/02/12 16:30:42 matt Exp $"); 67 68#include "assym.h" 69 70.stabs __FILE__,132,0,0,kernel_text 71 72 .text 73/* 74 * Linux signal trampoline code. Almost identical to the normal one. 75 */ 76 77NESTED_NOPROFILE(linux_sigcode,0,0,ra,0,0) 78 lda sp, -16(sp) /* save the sigcontext pointer */ 79 stq a2, 0(sp) 80 jsr ra, (t12) /* call the signal handler */ 81 ldq a0, 0(sp) /* get the sigcontext pointer */ 82 lda sp, 16(sp) 83 LINUX_CALLSYS_NOERROR(sigreturn) 84 mov v0, a0 85 LINUX_CALLSYS_NOERROR(exit) 86XNESTED(linux_esigcode,0) 87 END(linux_sigcode) 88 89NESTED_NOPROFILE(linux_rt_sigcode,0,0,ra,0,0) 90 lda sp, -16(sp) /* save the sigcontext pointer */ 91 stq a2, 0(sp) 92 jsr ra, (t12) /* call the signal handler */ 93 ldq a0, 0(sp) /* get the sigcontext pointer */ 94 lda sp, 16(sp) 95 LINUX_CALLSYS_NOERROR(rt_sigreturn) 96 mov v0, a0 97 LINUX_CALLSYS_NOERROR(exit) 98XNESTED(linux_rt_esigcode,0) 99 END(linux_rt_sigcode) 100