1From aaf28a4630af60496c9d33db1d06a7d7d8983422 Mon Sep 17 00:00:00 2001
2From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
3Date: Tue, 23 May 2023 13:50:24 +0600
4Subject: [PATCH] fixes broken aarch64 inline assembly for gcc 13.1
5
6fixes the following error
7
8/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_aarch64_neon_common.h:549:24: error: the register specified for 'w7' is not general enough to be used as a register variable
9  549 | register unsigned char w7 asm("v7") __attribute__((vector_size(16)));
10      |                        ^~
11/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_aarch64_neonx2.c:193:9: note: in expansion of macro 'GEN_X_DEFINE_6_7'
12  193 |         GEN_X_DEFINE_6_7()      \
13      |         ^~~~~~~~~~~~~~~~
14/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_impl.h:1360:9: note: in expansion of macro 'REC_PQR_DEFINE'
15 1360 |         REC_PQR_DEFINE();
16      |         ^~~~~~~~~~~~~~
17/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_aarch64_neon_common.h:551:24: error: the register specified for 'w8' is not general enough to be used as a register variable
18  551 | register unsigned char w8 asm("v8") __attribute__((vector_size(16)));   \
19      |                        ^~
20/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_aarch64_neonx2.c:194:9: note: in expansion of macro 'GEN_X_DEFINE_8_9'
21  194 |         GEN_X_DEFINE_8_9()      \
22      |         ^~~~~~~~~~~~~~~~
23/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_impl.h:1360:9: note: in expansion of macro 'REC_PQR_DEFINE'
24 1360 |         REC_PQR_DEFINE();
25      |         ^~~~~~~~~~~~~~
26/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_aarch64_neon_common.h:552:24: error: the register specified for 'w9' is not general enough to be used as a register variable
27  552 | register unsigned char w9 asm("v9") __attribute__((vector_size(16)));
28      |                        ^~
29/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_aarch64_neonx2.c:194:9: note: in expansion of macro 'GEN_X_DEFINE_8_9'
30  194 |         GEN_X_DEFINE_8_9()      \
31      |         ^~~~~~~~~~~~~~~~
32/mnt/b/yoe/master/build/tmp/work/imx8qm_var_som-yoe-linux/zfs/2.1.9-r0/build/../zfs-2.1.9/module/zfs/vdev_raidz_math_impl.h:1360:9: note: in expansion of macro 'REC_PQR_DEFINE'
33 1360 |         REC_PQR_DEFINE();
34
35Upstream-Status: Pending [https://github.com/BrainSlayer/zfs/commit/aaf28a4630af60496c9d33db1d06a7d7d8983422]
36Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
37Signed-off-by: Khem Raj <raj.khem@gmail.com>
38---
39 module/Kbuild.in | 6 +++---
40 1 file changed, 3 insertions(+), 3 deletions(-)
41
42--- a/module/Kbuild.in
43+++ b/module/Kbuild.in
44@@ -57,9 +57,9 @@ asflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_
45 ccflags-y := $(ZFS_MODULE_CFLAGS) $(ZFS_MODULE_CPPFLAGS)
46
47 ifeq ($(CONFIG_ARM64),y)
48-CFLAGS_REMOVE_zcommon/zfs_fletcher_aarch64_neon.o += -mgeneral-regs-only
49-CFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neon.o += -mgeneral-regs-only
50-CFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neonx2.o += -mgeneral-regs-only
51+CFLAGS_REMOVE_zcommon/zfs_fletcher_aarch64_neon.o = -mgeneral-regs-only
52+CFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neon.o = -mgeneral-regs-only
53+CFLAGS_REMOVE_zfs/vdev_raidz_math_aarch64_neonx2.o = -mgeneral-regs-only
54 endif
55
56 # Suppress unused-value warnings in sparc64 architecture headers
57