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 */