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