Module Name:    src
Committed By:   mrg
Date:           Sun May 23 23:24:45 UTC 2021

Modified Files:
        src/sys/arch/mips/include: mips_param.h netbsd32_machdep.h
        src/sys/arch/mips/mips: cpu_exec.c netbsd32_machdep.c

Log Message:
fix "uname -p" on mips n32.

this has been returning "mipsn64eb" on my edgerouter4 with the
32 bit uname binary.

introduce o32, n32, and n64 versions of MACHINE_ARCH, and use
them appropriately in PROC_MACHINE_ARCH32().  now o32, n32 and
n64 "uname -p" all return different values.


To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/sys/arch/mips/include/mips_param.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/mips/include/netbsd32_machdep.h
cvs rdiff -u -r1.67 -r1.68 src/sys/arch/mips/mips/cpu_exec.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/mips/mips/netbsd32_machdep.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/arch/mips/include/mips_param.h
diff -u src/sys/arch/mips/include/mips_param.h:1.49 src/sys/arch/mips/include/mips_param.h:1.50
--- src/sys/arch/mips/include/mips_param.h:1.49	Sat May  8 13:09:58 2021
+++ src/sys/arch/mips/include/mips_param.h	Sun May 23 23:24:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: mips_param.h,v 1.49 2021/05/08 13:09:58 skrll Exp $	*/
+/*	$NetBSD: mips_param.h,v 1.50 2021/05/23 23:24:45 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -38,19 +38,28 @@
 # error neither __MIPSEL__ nor __MIPSEB__ are defined.
 #endif
 
+#define	___MACHINE32_OARCH		mips##_MACHINE_SUFFIX
+#define	__MACHINE32_OARCH		"mips" MACHINE_SUFFIX
+#define	___MACHINE32_NARCH		mips64##_MACHINE_SUFFIX
+#define	__MACHINE32_NARCH		"mips64" MACHINE_SUFFIX
+#define	___MACHINE64_NARCH		mipsn64##_MACHINE_SUFFIX
+#define	__MACHINE64_NARCH		"mipsn64" MACHINE_SUFFIX
+
 #if defined(__mips_n32) || defined(__mips_n64)
 # if defined(__mips_n32)
-#  define	_MACHINE_ARCH	mips64##_MACHINE_SUFFIX
-#  define	MACHINE_ARCH	"mips64" MACHINE_SUFFIX
+#  define	_MACHINE_ARCH		___MACHINE32_NARCH
+#  define	MACHINE_ARCH		__MACHINE32_NARCH
 # else /* __mips_n64 */
-#  define	_MACHINE_ARCH	mipsn64##_MACHINE_SUFFIX
-#  define	MACHINE_ARCH	"mipsn64" MACHINE_SUFFIX
+#  define	_MACHINE_ARCH		___MACHINE64_NARCH
+#  define	MACHINE_ARCH		__MACHINE64_NARCH
+#  define	_MACHINE32_NARCH	___MACHINE32_NARCH
+#  define	MACHINE32_NARCH		__MACHINE32_NARCH
 # endif
-# define	_MACHINE32_ARCH	mips##_MACHINE_SUFFIX
-# define	MACHINE32_ARCH	"mips" MACHINE_SUFFIX
+# define	_MACHINE32_OARCH	___MACHINE32_OARCH
+# define	MACHINE32_OARCH		__MACHINE32_OARCH
 #else /* o32 */
-# define	_MACHINE_ARCH	mips##_MACHINE_SUFFIX
-# define	MACHINE_ARCH	"mips" MACHINE_SUFFIX
+# define	_MACHINE_ARCH		___MACHINE32_OARCH
+# define	MACHINE_ARCH		__MACHINE32_OARCH
 #endif
 
 /*

Index: src/sys/arch/mips/include/netbsd32_machdep.h
diff -u src/sys/arch/mips/include/netbsd32_machdep.h:1.6 src/sys/arch/mips/include/netbsd32_machdep.h:1.7
--- src/sys/arch/mips/include/netbsd32_machdep.h:1.6	Sun Jul 26 08:08:41 2020
+++ src/sys/arch/mips/include/netbsd32_machdep.h	Sun May 23 23:24:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_machdep.h,v 1.6 2020/07/26 08:08:41 simonb Exp $	*/
+/*	$NetBSD: netbsd32_machdep.h,v 1.7 2021/05/23 23:24:45 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -44,10 +44,17 @@ typedef struct { NETBSD32_POINTER_TYPE i
 
 typedef netbsd32_pointer_t			netbsd32_sigcontextp_t;
 
-/* Support varying ABI names for netbsd32 */
-extern const char machine_arch32[];
+/* Support varying ABI names for netbsd32/ABI */
+extern const char machine_archo32[];
+#if defined(__mips_n64)
+extern const char machine_archn32[];
 #define	PROC_MACHINE_ARCH32(P)	((P)->p_md.md_abi == _MIPS_BSD_API_O32) ? \
-	__UNCONST(machine_arch32) : machine_arch
+	__UNCONST(machine_archo32) : ((P)->p_md.md_abi == _MIPS_BSD_API_N32) ? \
+	__UNCONST(machine_archn32) : machine_arch
+#else
+#define	PROC_MACHINE_ARCH32(P)	((P)->p_md.md_abi == _MIPS_BSD_API_O32) ? \
+	__UNCONST(machine_archo32) : machine_arch
+#endif
 
 /*
  * The sigcode is ABI neutral.

Index: src/sys/arch/mips/mips/cpu_exec.c
diff -u src/sys/arch/mips/mips/cpu_exec.c:1.67 src/sys/arch/mips/mips/cpu_exec.c:1.68
--- src/sys/arch/mips/mips/cpu_exec.c:1.67	Sun Aug 19 10:33:49 2018
+++ src/sys/arch/mips/mips/cpu_exec.c	Sun May 23 23:24:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu_exec.c,v 1.67 2018/08/19 10:33:49 mrg Exp $	*/
+/*	$NetBSD: cpu_exec.c,v 1.68 2021/05/23 23:24:45 mrg Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu_exec.c,v 1.67 2018/08/19 10:33:49 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu_exec.c,v 1.68 2021/05/23 23:24:45 mrg Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_compat_ultrix.h"
@@ -201,7 +201,7 @@ coredump_elf32_setup(struct lwp *l, void
 		eh->e_flags |= EF_MIPS_ABI2;
 		break;
 	case _MIPS_BSD_API_O32:
-		eh->e_flags |=EF_MIPS_ABI_O32; 
+		eh->e_flags |= EF_MIPS_ABI_O32; 
 		break;
 	}
 }

Index: src/sys/arch/mips/mips/netbsd32_machdep.c
diff -u src/sys/arch/mips/mips/netbsd32_machdep.c:1.20 src/sys/arch/mips/mips/netbsd32_machdep.c:1.21
--- src/sys/arch/mips/mips/netbsd32_machdep.c:1.20	Thu Dec 12 02:15:42 2019
+++ src/sys/arch/mips/mips/netbsd32_machdep.c	Sun May 23 23:24:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_machdep.c,v 1.20 2019/12/12 02:15:42 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_machdep.c,v 1.21 2021/05/23 23:24:45 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.20 2019/12/12 02:15:42 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.21 2021/05/23 23:24:45 mrg Exp $");
 
 #include "opt_compat_netbsd.h"
 
@@ -67,7 +67,10 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_mac
 #include <uvm/uvm_extern.h>
 
 const char machine32[] = MACHINE;
-const char machine_arch32[] = MACHINE32_ARCH;
+const char machine_archo32[] = MACHINE32_OARCH;
+#ifdef MACHINE32_NARCH
+const char machine_archn32[] = MACHINE32_NARCH;
+#endif
 
 #if 0
 cpu_coredump32
@@ -321,7 +324,7 @@ static const char *
 netbsd32_machine32(void)
 {
 
-	return machine32;
+	return PROC_MACHINE_ARCH32(curproc);
 }
 
 void 

Reply via email to