Module Name:    src
Committed By:   rin
Date:           Tue Jul  7 01:39:23 UTC 2020

Modified Files:
        src/sys/arch/powerpc/include: cpu.h
        src/sys/arch/powerpc/powerpc: powerpc_machdep.c

Log Message:
Part of PR port-powerpc/55425
openssl fails on FPU emulation for powerpc

Provide machdep.fpu_present sysctl variable like other ports.

Userland can get informed that FPU is absent and emulated in software
(and calculation results may not be correct in bit-to-bit precision).

This variable should be useful even if we could fix FPU emulation;
it is much faster to skip FPU arithmetic in general, rather than
relying upon emulation by kernel via illegal instruction handler.


To generate a diff of this commit:
cvs rdiff -u -r1.113 -r1.114 src/sys/arch/powerpc/include/cpu.h
cvs rdiff -u -r1.78 -r1.79 src/sys/arch/powerpc/powerpc/powerpc_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/powerpc/include/cpu.h
diff -u src/sys/arch/powerpc/include/cpu.h:1.113 src/sys/arch/powerpc/include/cpu.h:1.114
--- src/sys/arch/powerpc/include/cpu.h:1.113	Mon Jul  6 13:20:55 2020
+++ src/sys/arch/powerpc/include/cpu.h	Tue Jul  7 01:39:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.113 2020/07/06 13:20:55 rin Exp $	*/
+/*	$NetBSD: cpu.h,v 1.114 2020/07/07 01:39:23 rin Exp $	*/
 
 /*
  * Copyright (C) 1999 Wolfgang Solfrank.
@@ -489,5 +489,6 @@ void	__syncicache(void *, size_t);
 #define	CPU_BOOTED_DEVICE	9	/* string: device we booted from */
 #define	CPU_BOOTED_KERNEL	10	/* string: kernel we booted */
 #define	CPU_EXECPROT		11	/* bool: PROT_EXEC works */
+#define	CPU_FPU			12
 
 #endif	/* _POWERPC_CPU_H_ */

Index: src/sys/arch/powerpc/powerpc/powerpc_machdep.c
diff -u src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.78 src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.79
--- src/sys/arch/powerpc/powerpc/powerpc_machdep.c:1.78	Mon Jul  6 09:34:18 2020
+++ src/sys/arch/powerpc/powerpc/powerpc_machdep.c	Tue Jul  7 01:39:23 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: powerpc_machdep.c,v 1.78 2020/07/06 09:34:18 rin Exp $	*/
+/*	$NetBSD: powerpc_machdep.c,v 1.79 2020/07/07 01:39:23 rin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.78 2020/07/06 09:34:18 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powerpc_machdep.c,v 1.79 2020/07/07 01:39:23 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -285,6 +285,17 @@ SYSCTL_SETUP(sysctl_machdep_setup, "sysc
 		       CTLTYPE_STRING, "booted_kernel", NULL,
 		       sysctl_machdep_booted_kernel, 0, NULL, 0,
 		       CTL_MACHDEP, CPU_BOOTED_KERNEL, CTL_EOL);
+	sysctl_createv(clog, 0, NULL, NULL,
+		       CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
+		       CTLTYPE_INT, "fpu_present", NULL,
+		       NULL,
+#if defined(PPC_HAVE_FPU)
+		       1,
+#else
+		       0,
+#endif
+		       NULL, 0,
+		       CTL_MACHDEP, CPU_FPU, CTL_EOL);
 }
 
 /*

Reply via email to