]> git.proxmox.com Git - mirror_zfs.git/commitdiff
FreeBSD: Fixes required to build ZFS on PowerPC
authorMatthew Macy <mmacy@mattmacy.io>
Sat, 25 Jul 2020 18:00:23 +0000 (11:00 -0700)
committerGitHub <noreply@github.com>
Sat, 25 Jul 2020 18:00:23 +0000 (11:00 -0700)
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
Closes #10622

include/os/freebsd/spl/sys/isa_defs.h
lib/libspl/include/sys/simd.h
module/zfs/vdev_raidz_math.c

index a9d1a4e1fd64b5035905c31ee42f75714e13676a..863c2447fe8b50dc7213727a7d0e8843bab90c4d 100644 (file)
@@ -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.
  *
index 844abe5c69a3ddb27c59a1964018b404e876eb6b..dceedb698fe04e63eed56e783f205568d919f571 100644 (file)
@@ -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)) {
index acaa32f6ddd285deda3595cea90e28017a9c2884..aa92cb83d301d7c21bb9a56b7da97ddca1e31e31 100644 (file)
@@ -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
 };