diff options
Diffstat (limited to 'module')
-rw-r--r-- | module/Kbuild.in | 6 | ||||
-rw-r--r-- | module/icp/algs/edonr/edonr.c | 4 | ||||
-rw-r--r-- | module/icp/algs/skein/skein_block.c | 2 | ||||
-rw-r--r-- | module/lua/ldo.c | 3 | ||||
-rw-r--r-- | module/os/linux/spl/spl-generic.c | 4 | ||||
-rw-r--r-- | module/zfs/vdev_raidz_math_aarch64_neonx2.c | 4 |
6 files changed, 21 insertions, 2 deletions
diff --git a/module/Kbuild.in b/module/Kbuild.in index 581d50e64..a39f9d9d0 100644 --- a/module/Kbuild.in +++ b/module/Kbuild.in @@ -42,6 +42,12 @@ endif asflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS) +ifeq ($(CONFIG_ARM64),y) +CFLAGS_REMOVE_zcommon/zfs_fletcher_aarch64_neon.o += -mgeneral-regs-only +CFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neon.o += -mgeneral-regs-only +CFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neonx2.o += -mgeneral-regs-only +endif + # Suppress unused-value warnings in sparc64 architecture headers ccflags-$(CONFIG_SPARC64) += -Wno-unused-value diff --git a/module/icp/algs/edonr/edonr.c b/module/icp/algs/edonr/edonr.c index 345133d74..b1f710cc0 100644 --- a/module/icp/algs/edonr/edonr.c +++ b/module/icp/algs/edonr/edonr.c @@ -346,9 +346,11 @@ Q256(size_t bitlen, const uint32_t *data, uint32_t *restrict p) * which only goes over it by a hair (1248 bytes on ARM32). */ #include <sys/isa_defs.h> /* for _ILP32 */ -#ifdef _ILP32 /* We're 32-bit, assume small stack frames */ +#if defined(_ILP32) /* We're 32-bit, assume small stack frames */ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic ignored "-Wframe-larger-than=" #endif +#endif #if defined(__IBMC__) && defined(_AIX) && defined(__64BIT__) static inline size_t diff --git a/module/icp/algs/skein/skein_block.c b/module/icp/algs/skein/skein_block.c index 7ba165a48..3ad52da5f 100644 --- a/module/icp/algs/skein/skein_block.c +++ b/module/icp/algs/skein/skein_block.c @@ -30,7 +30,9 @@ * the #pragma here to ignore the warning. */ #if defined(_ILP32) || defined(__powerpc) /* Assume small stack */ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic ignored "-Wframe-larger-than=" +#endif /* * We're running on 32-bit, don't unroll loops to save stack frame space * diff --git a/module/lua/ldo.c b/module/lua/ldo.c index e2a3d0279..291bca044 100644 --- a/module/lua/ldo.c +++ b/module/lua/ldo.c @@ -197,7 +197,8 @@ l_noret luaD_throw (lua_State *L, int errcode) { } } -#if defined(HAVE_INFINITE_RECURSION) +#if defined(__GNUC__) && !defined(__clang__) && \ + defined(HAVE_INFINITE_RECURSION) #pragma GCC diagnostic pop #endif diff --git a/module/os/linux/spl/spl-generic.c b/module/os/linux/spl/spl-generic.c index 71eedf635..38515023e 100644 --- a/module/os/linux/spl/spl-generic.c +++ b/module/os/linux/spl/spl-generic.c @@ -254,8 +254,10 @@ __div_u64(uint64_t u, uint32_t v) * replacements for libgcc-provided functions and will never be called * directly. */ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wmissing-prototypes" +#endif /* * Implementation of 64-bit unsigned division for 32-bit machines. @@ -449,7 +451,9 @@ __aeabi_ldivmod(int64_t u, int64_t v) EXPORT_SYMBOL(__aeabi_ldivmod); #endif /* __arm || __arm__ */ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop +#endif #endif /* BITS_PER_LONG */ diff --git a/module/zfs/vdev_raidz_math_aarch64_neonx2.c b/module/zfs/vdev_raidz_math_aarch64_neonx2.c index 0a1f05fd6..bd9de91a4 100644 --- a/module/zfs/vdev_raidz_math_aarch64_neonx2.c +++ b/module/zfs/vdev_raidz_math_aarch64_neonx2.c @@ -210,9 +210,13 @@ DEFINE_GEN_METHODS(aarch64_neonx2); * If compiled with -O0, gcc doesn't do any stack frame coalescing * and -Wframe-larger-than=1024 is triggered in debug mode. */ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic ignored "-Wframe-larger-than=" +#endif DEFINE_REC_METHODS(aarch64_neonx2); +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop +#endif static boolean_t raidz_will_aarch64_neonx2_work(void) |