1obj-$(CONFIG_RAID6_PQ) += raid6_pq.o 2 3raid6_pq-y += algos.o recov.o tables.o int1.o int2.o int4.o \ 4 int8.o int16.o int32.o 5 6raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o 7raid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o 8raid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o 9 10hostprogs-y += mktables 11 12quiet_cmd_unroll = UNROLL $@ 13 cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) \ 14 < $< > $@ || ( rm -f $@ && exit 1 ) 15 16ifeq ($(CONFIG_ALTIVEC),y) 17altivec_flags := -maltivec -mabi=altivec 18endif 19 20# The GCC option -ffreestanding is required in order to compile code containing 21# ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel) 22ifeq ($(CONFIG_KERNEL_MODE_NEON),y) 23NEON_FLAGS := -ffreestanding 24ifeq ($(ARCH),arm) 25NEON_FLAGS += -mfloat-abi=softfp -mfpu=neon 26endif 27ifeq ($(ARCH),arm64) 28CFLAGS_REMOVE_neon1.o += -mgeneral-regs-only 29CFLAGS_REMOVE_neon2.o += -mgeneral-regs-only 30CFLAGS_REMOVE_neon4.o += -mgeneral-regs-only 31CFLAGS_REMOVE_neon8.o += -mgeneral-regs-only 32endif 33endif 34 35targets += int1.c 36$(obj)/int1.c: UNROLL := 1 37$(obj)/int1.c: $(src)/int.uc $(src)/unroll.awk FORCE 38 $(call if_changed,unroll) 39 40targets += int2.c 41$(obj)/int2.c: UNROLL := 2 42$(obj)/int2.c: $(src)/int.uc $(src)/unroll.awk FORCE 43 $(call if_changed,unroll) 44 45targets += int4.c 46$(obj)/int4.c: UNROLL := 4 47$(obj)/int4.c: $(src)/int.uc $(src)/unroll.awk FORCE 48 $(call if_changed,unroll) 49 50targets += int8.c 51$(obj)/int8.c: UNROLL := 8 52$(obj)/int8.c: $(src)/int.uc $(src)/unroll.awk FORCE 53 $(call if_changed,unroll) 54 55targets += int16.c 56$(obj)/int16.c: UNROLL := 16 57$(obj)/int16.c: $(src)/int.uc $(src)/unroll.awk FORCE 58 $(call if_changed,unroll) 59 60targets += int32.c 61$(obj)/int32.c: UNROLL := 32 62$(obj)/int32.c: $(src)/int.uc $(src)/unroll.awk FORCE 63 $(call if_changed,unroll) 64 65CFLAGS_altivec1.o += $(altivec_flags) 66targets += altivec1.c 67$(obj)/altivec1.c: UNROLL := 1 68$(obj)/altivec1.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 69 $(call if_changed,unroll) 70 71CFLAGS_altivec2.o += $(altivec_flags) 72targets += altivec2.c 73$(obj)/altivec2.c: UNROLL := 2 74$(obj)/altivec2.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 75 $(call if_changed,unroll) 76 77CFLAGS_altivec4.o += $(altivec_flags) 78targets += altivec4.c 79$(obj)/altivec4.c: UNROLL := 4 80$(obj)/altivec4.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 81 $(call if_changed,unroll) 82 83CFLAGS_altivec8.o += $(altivec_flags) 84targets += altivec8.c 85$(obj)/altivec8.c: UNROLL := 8 86$(obj)/altivec8.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 87 $(call if_changed,unroll) 88 89CFLAGS_neon1.o += $(NEON_FLAGS) 90targets += neon1.c 91$(obj)/neon1.c: UNROLL := 1 92$(obj)/neon1.c: $(src)/neon.uc $(src)/unroll.awk FORCE 93 $(call if_changed,unroll) 94 95CFLAGS_neon2.o += $(NEON_FLAGS) 96targets += neon2.c 97$(obj)/neon2.c: UNROLL := 2 98$(obj)/neon2.c: $(src)/neon.uc $(src)/unroll.awk FORCE 99 $(call if_changed,unroll) 100 101CFLAGS_neon4.o += $(NEON_FLAGS) 102targets += neon4.c 103$(obj)/neon4.c: UNROLL := 4 104$(obj)/neon4.c: $(src)/neon.uc $(src)/unroll.awk FORCE 105 $(call if_changed,unroll) 106 107CFLAGS_neon8.o += $(NEON_FLAGS) 108targets += neon8.c 109$(obj)/neon8.c: UNROLL := 8 110$(obj)/neon8.c: $(src)/neon.uc $(src)/unroll.awk FORCE 111 $(call if_changed,unroll) 112 113quiet_cmd_mktable = TABLE $@ 114 cmd_mktable = $(obj)/mktables > $@ || ( rm -f $@ && exit 1 ) 115 116targets += tables.c 117$(obj)/tables.c: $(obj)/mktables FORCE 118 $(call if_changed,mktable) 119