Module Name:    src
Committed By:   christos
Date:           Thu Oct 28 11:11:11 UTC 2021

Modified Files:
        src/sys/arch/hppa/hppa: locore.S
Added Files:
        src/sys/arch/hppa/hppa: sigcode.S

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


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/hppa/hppa/locore.S
cvs rdiff -u -r0 -r1.10 src/sys/arch/hppa/hppa/sigcode.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/hppa/hppa/locore.S
diff -u src/sys/arch/hppa/hppa/locore.S:1.5 src/sys/arch/hppa/hppa/locore.S:1.6
--- src/sys/arch/hppa/hppa/locore.S:1.5	Wed Oct 27 17:42:58 2021
+++ src/sys/arch/hppa/hppa/locore.S	Thu Oct 28 07:11:11 2021
@@ -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 @@ ENTRY_NOPROFILE(lwp_trampoline,HPPA_FRAM
 	ldw	L_MD(%t2), %t3
 EXIT(lwp_trampoline)
 
+/* Include the signal code, used in compat code */
+#include <hppa/hppa/sigcode.S>
+
 	.end

Added files:

Index: src/sys/arch/hppa/hppa/sigcode.S
diff -u /dev/null src/sys/arch/hppa/hppa/sigcode.S:1.10
--- /dev/null	Thu Oct 28 07:11:11 2021
+++ src/sys/arch/hppa/hppa/sigcode.S	Thu Oct 28 07:11:11 2021
@@ -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 [email protected] 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)

Reply via email to