Module Name:    src
Committed By:   mlelstv
Date:           Fri Nov 22 10:41:50 UTC 2024

Modified Files:
        src/sys/compat/common: kern_sig_16.c
        src/sys/compat/netbsd32: netbsd32_compat_16.c netbsd32_signal.c

Log Message:
Crude patch to allow building and loading of compat_16 and compat_netbsd32_16 
code
on aarch64.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/compat/common/kern_sig_16.c
cvs rdiff -u -r1.6 -r1.7 src/sys/compat/netbsd32/netbsd32_compat_16.c
cvs rdiff -u -r1.54 -r1.55 src/sys/compat/netbsd32/netbsd32_signal.c

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

Modified files:

Index: src/sys/compat/common/kern_sig_16.c
diff -u src/sys/compat/common/kern_sig_16.c:1.8 src/sys/compat/common/kern_sig_16.c:1.9
--- src/sys/compat/common/kern_sig_16.c:1.8	Thu Dec  2 04:26:09 2021
+++ src/sys/compat/common/kern_sig_16.c	Fri Nov 22 10:41:50 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_sig_16.c,v 1.8 2021/12/02 04:26:09 ryo Exp $	*/
+/*	$NetBSD: kern_sig_16.c,v 1.9 2024/11/22 10:41:50 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_sig_16.c,v 1.8 2021/12/02 04:26:09 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_sig_16.c,v 1.9 2024/11/22 10:41:50 mlelstv Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -93,8 +93,17 @@ __KERNEL_RCSID(0, "$NetBSD: kern_sig_16.
 
 #include <compat/common/compat_mod.h>
 
-#if !defined(__amd64__) || defined(COMPAT_NETBSD32)
-#define COMPAT_SIGCONTEXT
+#ifdef COMPAT_NETBSD32
+# ifndef __aarch64__
+#  define COMPAT_SIGCONTEXT
+# endif
+#else /* COMPAT_NETBSD32 */
+# if !defined(__amd64__) && !defined(__arch64__)
+#  define COMPAT_SIGCONTEXT
+# endif
+#endif /* COMPAT_NETBSD32 */
+
+#ifdef COMPAT_SIGCONTEXT
 extern char sigcode[], esigcode[];
 struct uvm_object *emul_netbsd_object;
 #endif

Index: src/sys/compat/netbsd32/netbsd32_compat_16.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_16.c:1.6 src/sys/compat/netbsd32/netbsd32_compat_16.c:1.7
--- src/sys/compat/netbsd32/netbsd32_compat_16.c:1.6	Sun Aug 18 18:42:57 2024
+++ src/sys/compat/netbsd32/netbsd32_compat_16.c	Fri Nov 22 10:41:50 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_16.c,v 1.6 2024/08/18 18:42:57 riastradh Exp $	*/
+/*	$NetBSD: netbsd32_compat_16.c,v 1.7 2024/11/22 10:41:50 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_16.c,v 1.6 2024/08/18 18:42:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_16.c,v 1.7 2024/11/22 10:41:50 mlelstv Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -48,23 +48,39 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
 
 struct uvm_object *emul_netbsd32_object;
 
+#if defined(__amd64__) || defined(__arm__) || defined(__mips__) || defined(__sparc64__)
+#define __HAVE_MD_NETBSD32_SIGRETURN14
+#endif
+
+#if defined(__arm__) || defined(__mips__) || defined(__powerpc__) || defined(__riscv__)
+#define __HAVE_MD_NETBSD32_SIGCODE
+#endif
+
+
+#ifdef __HAVE_MD_NETBSD32_SIGRETURN14
 static const struct syscall_package netbsd32_kern_sig_16_syscalls[] = {
-        /* compat_16_netbs32___sigreturn14 is in MD code! */
+        /* compat_16_netbsd32___sigreturn14 is in MD code! */
         { NETBSD32_SYS_compat_16_netbsd32___sigreturn14, 0,
             (sy_call_t *)compat_16_netbsd32___sigreturn14 },
         { 0, 0, NULL }
 };
+#endif
 
 static int
 compat_netbsd32_16_init(void)
 {
+#if defined(__HAVE_MD_NETBSD32_SIGRETURN14) || defined(__HAVE_MD_NETBSD32_SIGCODE)
 	int error;
+#endif
 
+#ifdef __HAVE_MD_NETBSD32_SIGRETURN14
 	error = syscall_establish(&emul_netbsd32,
 	    netbsd32_kern_sig_16_syscalls);
 	if (error)
 		return error;
+#endif
 
+#ifdef __HAVE_MD_NETBSD32_SIGCODE
 	rw_enter(&exec_lock, RW_WRITER);
 	emul_netbsd32.e_sigcode = netbsd32_sigcode;
 	emul_netbsd32.e_esigcode = netbsd32_esigcode;
@@ -79,15 +95,19 @@ compat_netbsd32_16_init(void)
 	if (error)
 		return error;
 	netbsd32_machdep_md_16_init();
+#endif
 	return 0;
 }
 
 static int
 compat_netbsd32_16_fini(void)
 {
+#if defined(__HAVE_MD_NETBSD32_SIGRETURN14)
 	proc_t *p;
 	int error;
+#endif
 
+#ifdef __HAVE_MD_NETBSD32_SIGRETURN14
 	error = syscall_disestablish(&emul_netbsd32,
 	    netbsd32_kern_sig_16_syscalls);
 	if (error)
@@ -110,7 +130,9 @@ compat_netbsd32_16_fini(void)
 		    netbsd32_kern_sig_16_syscalls);
 		return EBUSY;
 	}
+#endif
 
+#ifdef __HAVE_MD_NETBSD32_SIGCODE
 	rw_enter(&exec_lock, RW_WRITER);
 	exec_sigcode_free(&emul_netbsd);
 	emul_netbsd32.e_sigcode = NULL;
@@ -118,6 +140,7 @@ compat_netbsd32_16_fini(void)
 	emul_netbsd32.e_sigobject = NULL;
 	rw_exit(&exec_lock);
 	netbsd32_machdep_md_16_fini();
+#endif
 	return 0;
 }
 

Index: src/sys/compat/netbsd32/netbsd32_signal.c
diff -u src/sys/compat/netbsd32/netbsd32_signal.c:1.54 src/sys/compat/netbsd32/netbsd32_signal.c:1.55
--- src/sys/compat/netbsd32/netbsd32_signal.c:1.54	Mon Apr 29 14:56:01 2024
+++ src/sys/compat/netbsd32/netbsd32_signal.c	Fri Nov 22 10:41:50 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_signal.c,v 1.54 2024/04/29 14:56:01 mlelstv Exp $	*/
+/*	$NetBSD: netbsd32_signal.c,v 1.55 2024/11/22 10:41:50 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_signal.c,v 1.54 2024/04/29 14:56:01 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_signal.c,v 1.55 2024/11/22 10:41:50 mlelstv Exp $");
 
 #if defined(_KERNEL_OPT) 
 #include "opt_ktrace.h"
@@ -214,8 +214,8 @@ netbsd32___sigaction_sigtramp(struct lwp
 		if (!sigcontext_valid) {
 			return EINVAL;
 		}
-#else /* ! __HAVE_STRUCT_SIGCONTEXT */
-		return EINVAL;
+// #else /* ! __HAVE_STRUCT_SIGCONTEXT */
+// 		return EINVAL;
 #endif /* __HAVE_STRUCT_SIGCONTEXT */
 	}
 #endif /* __HAVE_MD_NETBSD32_SENDSIG */

Reply via email to