aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Macy <mmacy@mattmacy.io>2020-07-25 11:00:23 -0700
committerGitHub <noreply@github.com>2020-07-25 11:00:23 -0700
commitf5b189f9379b092600293ac3e7a670bf2087d88c (patch)
tree303d187727bf643c8e0ec91a937c76a6f33c5dcd
parentd364de7a89dc339aad1bc20d429dc670e61dc1ff (diff)
FreeBSD: Fixes required to build ZFS on PowerPC
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Matt Macy <mmacy@FreeBSD.org> Closes #10622
-rw-r--r--include/os/freebsd/spl/sys/isa_defs.h15
-rw-r--r--lib/libspl/include/sys/simd.h4
-rw-r--r--module/zfs/vdev_raidz_math.c2
3 files changed, 18 insertions, 3 deletions
diff --git a/include/os/freebsd/spl/sys/isa_defs.h b/include/os/freebsd/spl/sys/isa_defs.h
index a9d1a4e1f..863c2447f 100644
--- a/include/os/freebsd/spl/sys/isa_defs.h
+++ b/include/os/freebsd/spl/sys/isa_defs.h
@@ -542,6 +542,21 @@ extern "C" {
#define _BIT_FIELDS_LTOH
#endif
+#if !defined(__powerpc)
+#define __powerpc
+#endif
+
+#if defined(__powerpc64__)
+#define _LONG_LONG_ALIGNMENT 8
+#define _MULTI_DATAMODEL
+#else
+#define _LONG_LONG_ALIGNMENT 4
+#endif
+#define _LONG_LONG_ALIGNMENT_32 4
+#define _ALIGNMENT_REQUIRED 1
+
+#define _SUNOS_VTOC_16 1
+
/*
* The following set of definitions characterize the Solaris on SPARC systems.
*
diff --git a/lib/libspl/include/sys/simd.h b/lib/libspl/include/sys/simd.h
index 844abe5c6..dceedb698 100644
--- a/lib/libspl/include/sys/simd.h
+++ b/lib/libspl/include/sys/simd.h
@@ -464,7 +464,7 @@ zfs_avx512vbmi_available(void)
#include <signal.h>
#include <setjmp.h>
-#ifdef __ALTIVEC__
+#if defined(__ALTIVEC__) && !defined(__FreeBSD__)
static jmp_buf env;
static void sigillhandler(int x)
{
@@ -476,7 +476,7 @@ static inline boolean_t
zfs_altivec_available(void)
{
boolean_t has_altivec = B_FALSE;
-#ifdef __ALTIVEC__
+#if defined(__ALTIVEC__) && !defined(__FreeBSD__)
sighandler_t savesig;
savesig = signal(SIGILL, sigillhandler);
if (setjmp(env)) {
diff --git a/module/zfs/vdev_raidz_math.c b/module/zfs/vdev_raidz_math.c
index acaa32f6d..aa92cb83d 100644
--- a/module/zfs/vdev_raidz_math.c
+++ b/module/zfs/vdev_raidz_math.c
@@ -65,7 +65,7 @@ const raidz_impl_ops_t *raidz_all_maths[] = {
&vdev_raidz_aarch64_neon_impl,
&vdev_raidz_aarch64_neonx2_impl,
#endif
-#if defined(__powerpc__)
+#if defined(__powerpc__) && defined(__altivec__)
&vdev_raidz_powerpc_altivec_impl,
#endif
};