04e85bbf71
Further isolate kernel from userspace, prevent accidental inclusion of undesireable headers, mainly float.h and stdatomic.h. nds32 keeps -isystem globally due to intrinsics used in entrenched header. -isystem is selectively reenabled for some files, again, for intrinsics. Compile tested on: hexagon-defconfig hexagon-allmodconfig alpha-allmodconfig alpha-allnoconfig alpha-defconfig arm64-allmodconfig arm64-allnoconfig arm64-defconfig arm-am200epdkit arm-aspeed_g4 arm-aspeed_g5 arm-assabet arm-at91_dt arm-axm55xx arm-badge4 arm-bcm2835 arm-cerfcube arm-clps711x arm-cm_x300 arm-cns3420vb arm-colibri_pxa270 arm-colibri_pxa300 arm-collie arm-corgi arm-davinci_all arm-dove arm-ep93xx arm-eseries_pxa arm-exynos arm-ezx arm-footbridge arm-gemini arm-h3600 arm-h5000 arm-hackkit arm-hisi arm-imote2 arm-imx_v4_v5 arm-imx_v6_v7 arm-integrator arm-iop32x arm-ixp4xx arm-jornada720 arm-keystone arm-lart arm-lpc18xx arm-lpc32xx arm-lpd270 arm-lubbock arm-magician arm-mainstone arm-milbeaut_m10v arm-mini2440 arm-mmp2 arm-moxart arm-mps2 arm-multi_v4t arm-multi_v5 arm-multi_v7 arm-mv78xx0 arm-mvebu_v5 arm-mvebu_v7 arm-mxs arm-neponset arm-netwinder arm-nhk8815 arm-omap1 arm-omap2plus arm-orion5x arm-oxnas_v6 arm-palmz72 arm-pcm027 arm-pleb arm-pxa arm-pxa168 arm-pxa255-idp arm-pxa3xx arm-pxa910 arm-qcom arm-realview arm-rpc arm-s3c2410 arm-s3c6400 arm-s5pv210 arm-sama5 arm-shannon arm-shmobile arm-simpad arm-socfpga arm-spear13xx arm-spear3xx arm-spear6xx arm-spitz arm-stm32 arm-sunxi arm-tct_hammer arm-tegra arm-trizeps4 arm-u8500 arm-versatile arm-vexpress arm-vf610m4 arm-viper arm-vt8500_v6_v7 arm-xcep arm-zeus csky-allmodconfig csky-allnoconfig csky-defconfig h8300-edosk2674 h8300-h8300h-sim h8300-h8s-sim i386-allmodconfig i386-allnoconfig i386-defconfig ia64-allmodconfig ia64-allnoconfig ia64-bigsur ia64-generic ia64-gensparse ia64-tiger ia64-zx1 m68k-amcore m68k-amiga m68k-apollo m68k-atari m68k-bvme6000 m68k-hp300 m68k-m5208evb m68k-m5249evb m68k-m5272c3 m68k-m5275evb m68k-m5307c3 m68k-m5407c3 m68k-m5475evb m68k-mac m68k-multi m68k-mvme147 m68k-mvme16x m68k-q40 m68k-stmark2 m68k-sun3 m68k-sun3x microblaze-allmodconfig microblaze-allnoconfig microblaze-mmu mips-ar7 mips-ath25 mips-ath79 mips-bcm47xx mips-bcm63xx mips-bigsur mips-bmips_be mips-bmips_stb mips-capcella mips-cavium_octeon mips-ci20 mips-cobalt mips-cu1000-neo mips-cu1830-neo mips-db1xxx mips-decstation mips-decstation_64 mips-decstation_r4k mips-e55 mips-fuloong2e mips-gcw0 mips-generic mips-gpr mips-ip22 mips-ip27 mips-ip28 mips-ip32 mips-jazz mips-jmr3927 mips-lemote2f mips-loongson1b mips-loongson1c mips-loongson2k mips-loongson3 mips-malta mips-maltaaprp mips-malta_kvm mips-malta_qemu_32r6 mips-maltasmvp mips-maltasmvp_eva mips-maltaup mips-maltaup_xpa mips-mpc30x mips-mtx1 mips-nlm_xlp mips-nlm_xlr mips-omega2p mips-pic32mzda mips-pistachio mips-qi_lb60 mips-rb532 mips-rbtx49xx mips-rm200 mips-rs90 mips-rt305x mips-sb1250_swarm mips-tb0219 mips-tb0226 mips-tb0287 mips-vocore2 mips-workpad mips-xway nds32-allmodconfig nds32-allnoconfig nds32-defconfig nios2-10m50 nios2-3c120 nios2-allmodconfig nios2-allnoconfig openrisc-allmodconfig openrisc-allnoconfig openrisc-or1klitex openrisc-or1ksim openrisc-simple_smp parisc-allnoconfig parisc-generic-32bit parisc-generic-64bit powerpc-acadia powerpc-adder875 powerpc-akebono powerpc-amigaone powerpc-arches powerpc-asp8347 powerpc-bamboo powerpc-bluestone powerpc-canyonlands powerpc-cell powerpc-chrp32 powerpc-cm5200 powerpc-currituck powerpc-ebony powerpc-eiger powerpc-ep8248e powerpc-ep88xc powerpc-fsp2 powerpc-g5 powerpc-gamecube powerpc-ge_imp3a powerpc-holly powerpc-icon powerpc-iss476-smp powerpc-katmai powerpc-kilauea powerpc-klondike powerpc-kmeter1 powerpc-ksi8560 powerpc-linkstation powerpc-lite5200b powerpc-makalu powerpc-maple powerpc-mgcoge powerpc-microwatt powerpc-motionpro powerpc-mpc512x powerpc-mpc5200 powerpc-mpc7448_hpc2 powerpc-mpc8272_ads powerpc-mpc8313_rdb powerpc-mpc8315_rdb powerpc-mpc832x_mds powerpc-mpc832x_rdb powerpc-mpc834x_itx powerpc-mpc834x_itxgp powerpc-mpc834x_mds powerpc-mpc836x_mds powerpc-mpc836x_rdk powerpc-mpc837x_mds powerpc-mpc837x_rdb powerpc-mpc83xx powerpc-mpc8540_ads powerpc-mpc8560_ads powerpc-mpc85xx_cds powerpc-mpc866_ads powerpc-mpc885_ads powerpc-mvme5100 powerpc-obs600 powerpc-pasemi powerpc-pcm030 powerpc-pmac32 powerpc-powernv powerpc-ppa8548 powerpc-ppc40x powerpc-ppc44x powerpc-ppc64 powerpc-ppc64e powerpc-ppc6xx powerpc-pq2fads powerpc-ps3 powerpc-pseries powerpc-rainier powerpc-redwood powerpc-sam440ep powerpc-sbc8548 powerpc-sequoia powerpc-skiroot powerpc-socrates powerpc-storcenter powerpc-stx_gp3 powerpc-taishan powerpc-tqm5200 powerpc-tqm8540 powerpc-tqm8541 powerpc-tqm8548 powerpc-tqm8555 powerpc-tqm8560 powerpc-tqm8xx powerpc-walnut powerpc-warp powerpc-wii powerpc-xes_mpc85xx riscv-allmodconfig riscv-allnoconfig riscv-nommu_k210 riscv-nommu_k210_sdcard riscv-nommu_virt riscv-rv32 s390-allmodconfig s390-allnoconfig s390-debug s390-zfcpdump sh-ap325rxa sh-apsh4a3a sh-apsh4ad0a sh-dreamcast sh-ecovec24 sh-ecovec24-romimage sh-edosk7705 sh-edosk7760 sh-espt sh-hp6xx sh-j2 sh-kfr2r09 sh-kfr2r09-romimage sh-landisk sh-lboxre2 sh-magicpanelr2 sh-microdev sh-migor sh-polaris sh-r7780mp sh-r7785rp sh-rsk7201 sh-rsk7203 sh-rsk7264 sh-rsk7269 sh-rts7751r2d1 sh-rts7751r2dplus sh-sdk7780 sh-sdk7786 sh-se7206 sh-se7343 sh-se7619 sh-se7705 sh-se7712 sh-se7721 sh-se7722 sh-se7724 sh-se7750 sh-se7751 sh-se7780 sh-secureedge5410 sh-sh03 sh-sh2007 sh-sh7710voipgw sh-sh7724_generic sh-sh7757lcr sh-sh7763rdp sh-sh7770_generic sh-sh7785lcr sh-sh7785lcr_32bit sh-shmin sh-shx3 sh-titan sh-ul2 sh-urquell sparc-allmodconfig sparc-allnoconfig sparc-sparc32 sparc-sparc64 um-i386-allmodconfig um-i386-allnoconfig um-i386-defconfig um-x86_64-allmodconfig um-x86_64-allnoconfig x86_64-allmodconfig x86_64-allnoconfig x86_64-defconfig xtensa-allmodconfig xtensa-allnoconfig xtensa-audio_kc705 xtensa-cadence_csp xtensa-common xtensa-generic_kc705 xtensa-iss xtensa-nommu_kc705 xtensa-smp_lx200 xtensa-virt xtensa-xip_kc705 Tested-by: Nathan Chancellor <nathan@kernel.org> # build (hexagon) Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Acked-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
95 lines
3.3 KiB
Makefile
95 lines
3.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
obj-$(CONFIG_RAID6_PQ) += raid6_pq.o
|
|
|
|
raid6_pq-y += algos.o recov.o tables.o int1.o int2.o int4.o \
|
|
int8.o int16.o int32.o
|
|
|
|
raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o avx512.o recov_avx512.o
|
|
raid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o \
|
|
vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
|
|
raid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o
|
|
raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
|
|
|
|
hostprogs += mktables
|
|
|
|
ifeq ($(CONFIG_ALTIVEC),y)
|
|
altivec_flags := -maltivec $(call cc-option,-mabi=altivec)
|
|
# Enable <altivec.h>
|
|
altivec_flags += -isystem $(shell $(CC) -print-file-name=include)
|
|
|
|
ifdef CONFIG_CC_IS_CLANG
|
|
# clang ppc port does not yet support -maltivec when -msoft-float is
|
|
# enabled. A future release of clang will resolve this
|
|
# https://bugs.llvm.org/show_bug.cgi?id=31177
|
|
CFLAGS_REMOVE_altivec1.o += -msoft-float
|
|
CFLAGS_REMOVE_altivec2.o += -msoft-float
|
|
CFLAGS_REMOVE_altivec4.o += -msoft-float
|
|
CFLAGS_REMOVE_altivec8.o += -msoft-float
|
|
CFLAGS_REMOVE_vpermxor1.o += -msoft-float
|
|
CFLAGS_REMOVE_vpermxor2.o += -msoft-float
|
|
CFLAGS_REMOVE_vpermxor4.o += -msoft-float
|
|
CFLAGS_REMOVE_vpermxor8.o += -msoft-float
|
|
endif
|
|
endif
|
|
|
|
# The GCC option -ffreestanding is required in order to compile code containing
|
|
# ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel)
|
|
ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
|
|
NEON_FLAGS := -ffreestanding
|
|
# Enable <arm_neon.h>
|
|
NEON_FLAGS += -isystem $(shell $(CC) -print-file-name=include)
|
|
ifeq ($(ARCH),arm)
|
|
NEON_FLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
|
|
endif
|
|
CFLAGS_recov_neon_inner.o += $(NEON_FLAGS)
|
|
ifeq ($(ARCH),arm64)
|
|
CFLAGS_REMOVE_recov_neon_inner.o += -mgeneral-regs-only
|
|
CFLAGS_REMOVE_neon1.o += -mgeneral-regs-only
|
|
CFLAGS_REMOVE_neon2.o += -mgeneral-regs-only
|
|
CFLAGS_REMOVE_neon4.o += -mgeneral-regs-only
|
|
CFLAGS_REMOVE_neon8.o += -mgeneral-regs-only
|
|
endif
|
|
endif
|
|
|
|
quiet_cmd_unroll = UNROLL $@
|
|
cmd_unroll = $(AWK) -v N=$* -f $(srctree)/$(src)/unroll.awk < $< > $@
|
|
|
|
targets += int1.c int2.c int4.c int8.c int16.c int32.c
|
|
$(obj)/int%.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_altivec1.o += $(altivec_flags)
|
|
CFLAGS_altivec2.o += $(altivec_flags)
|
|
CFLAGS_altivec4.o += $(altivec_flags)
|
|
CFLAGS_altivec8.o += $(altivec_flags)
|
|
targets += altivec1.c altivec2.c altivec4.c altivec8.c
|
|
$(obj)/altivec%.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_vpermxor1.o += $(altivec_flags)
|
|
CFLAGS_vpermxor2.o += $(altivec_flags)
|
|
CFLAGS_vpermxor4.o += $(altivec_flags)
|
|
CFLAGS_vpermxor8.o += $(altivec_flags)
|
|
targets += vpermxor1.c vpermxor2.c vpermxor4.c vpermxor8.c
|
|
$(obj)/vpermxor%.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_neon1.o += $(NEON_FLAGS)
|
|
CFLAGS_neon2.o += $(NEON_FLAGS)
|
|
CFLAGS_neon4.o += $(NEON_FLAGS)
|
|
CFLAGS_neon8.o += $(NEON_FLAGS)
|
|
targets += neon1.c neon2.c neon4.c neon8.c
|
|
$(obj)/neon%.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
targets += s390vx8.c
|
|
$(obj)/s390vx%.c: $(src)/s390vx.uc $(src)/unroll.awk FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
quiet_cmd_mktable = TABLE $@
|
|
cmd_mktable = $(obj)/mktables > $@
|
|
|
|
targets += tables.c
|
|
$(obj)/tables.c: $(obj)/mktables FORCE
|
|
$(call if_changed,mktable)
|