Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/hppa/hppa put back the compat signal code; still ha...



details:   https://anonhg.NetBSD.org/src/rev/2d9aa8de43bc
branches:  trunk
changeset: 1024549:2d9aa8de43bc
user:      christos <christos%NetBSD.org@localhost>
date:      Thu Oct 28 11:11:11 2021 +0000

description:
put back the compat signal code; still have the stubs for it in libc

diffstat:

 sys/arch/hppa/hppa/locore.S  |    5 +-
 sys/arch/hppa/hppa/sigcode.S |  118 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 122 insertions(+), 1 deletions(-)

diffs (139 lines):

diff -r f4e0ba2df23b -r 2d9aa8de43bc sys/arch/hppa/hppa/locore.S
--- a/sys/arch/hppa/hppa/locore.S       Thu Oct 28 11:07:07 2021 +0000
+++ b/sys/arch/hppa/hppa/locore.S       Thu Oct 28 11:11:11 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: locore.S,v 1.5 2021/10/27 21:42:58 christos Exp $      */
+/*     $NetBSD: locore.S,v 1.6 2021/10/28 11:11:11 christos Exp $      */
 /*     $OpenBSD: locore.S,v 1.158 2008/07/28 19:08:46 miod Exp $       */
 
 /*
@@ -1000,4 +1000,7 @@
        ldw     L_MD(%t2), %t3
 EXIT(lwp_trampoline)
 
+/* Include the signal code, used in compat code */
+#include <hppa/hppa/sigcode.S>
+
        .end
diff -r f4e0ba2df23b -r 2d9aa8de43bc sys/arch/hppa/hppa/sigcode.S
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/hppa/hppa/sigcode.S      Thu Oct 28 11:11:11 2021 +0000
@@ -0,0 +1,118 @@
+/*     $NetBSD: sigcode.S,v 1.10 2021/10/28 11:11:11 christos Exp $    */
+
+/*     $OpenBSD: locore.S,v 1.46 2001/09/20 18:33:03 mickey Exp $      */
+
+/*
+ * Copyright (c) 1998-2004 Michael Shalayeff
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Portitions of this file are derived from other sources, see
+ * the copyrights and acknowledgements below.
+ */
+/*
+ * Copyright (c) 1990,1991,1992,1994 The University of Utah and
+ * the Computer Systems Laboratory (CSL).  All rights reserved.
+ *
+ * THE UNIVERSITY OF UTAH AND CSL PROVIDE THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION, AND DISCLAIM ANY LIABILITY OF ANY KIND FOR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM ITS USE.
+ *
+ * CSL requests users of this software to return to csl-dist%cs.utah.edu@localhost any
+ * improvements that they make and grant CSL redistribution rights.
+ *
+ *     Utah $Hdr: locore.s 1.62 94/12/15$
+ */
+/*
+ *  (c) Copyright 1988 HEWLETT-PACKARD COMPANY
+ *
+ *  To anyone who acknowledges that this file is provided "AS IS"
+ *  without any express or implied warranty:
+ *      permission to use, copy, modify, and distribute this file
+ *  for any purpose is hereby granted without fee, provided that
+ *  the above copyright notice and this notice appears in all
+ *  copies, and that the name of Hewlett-Packard Company not be
+ *  used in advertising or publicity pertaining to distribution
+ *  of the software without specific, written prior permission.
+ *  Hewlett-Packard Company makes no representations about the
+ *  suitability of this software for any purpose.
+ */
+
+/*
+ * NOTICE: This is not a standalone file.  To use it, #include it in
+ * your port's locore.S, like so:
+ *
+ *     #include <hppa/hppa/sigcode.S>
+ */
+
+/*
+ * Signal "trampoline" code. Invoked from RTE setup by sendsig().
+ */
+ENTRY_NOPROFILE(sigcode,0)
+       .call
+       /*
+        * Our sendsig() places the address of the signal handler
+        * in %arg3.  It may actually be a PLABEL.
+        */
+       bb,>=,n %arg3, 30, L$sigcode_bounce     ; branch if not a PLABEL
+       depi    0, 31, 2, %arg3                 ; zero L bit in PLABEL pointer
+       ldw     4(%arg3), %r19                  ; load shared library linkage
+       ldw     0(%arg3), %arg3                 ; load real catcher address
+L$sigcode_bounce:
+       /*
+        * This blr puts the address of the following nop in rp.
+        * It also schedules the nop for execution, which is why
+        * that instruction has to be a nop, or, rather, not any
+        * instruction only meant to execute once the signal handler
+        * returns.
+        */
+       blr     %r0, %rp
+       /*
+        * This bv schedules the instruction pointed to by arg3
+        * for execution.  So, arg3 is the address of the signal
+        * handler.
+        */
+       bv,n    %r0(%arg3)
+       nop
+       /*
+        * The signal handler has returned.  Since %r3 is on the list
+        * of callee-saved registers, it's whatever the sendsig
+        * code wanted it set to.  Since we copy it into arg0,
+        * it looks like sendsig leaves %r3 holding the desired
+        * single argument to sys___sigreturn14, i.e., the
+        * struct sigcontext *.
+        */
+       /* Make a SYS___sigreturn14 system call. */
+       copy    %r3, %arg0
+       ldil    L%SYSCALLGATE, %r1
+       .call
+       ble     4(%sr7, %r1)
+       ldi     SYS_compat_16___sigreturn14, %t1
+       /* Make a SYS_exit system call. */
+       copy    %ret0, %arg0
+       ldil    L%SYSCALLGATE, %r1
+       .call
+       ble     4(%sr7, %r1)
+       ldi     SYS_exit, %t1
+ALTENTRY(esigcode)
+EXIT(sigcode)



Home | Main Index | Thread Index | Old Index