On Wed, Jul 15, 2020 at 03:19:44PM +0800, Zhenyu Ye wrote: > diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile > index a0d94d063fa8..4e823b97c92e 100644 > --- a/arch/arm64/Makefile > +++ b/arch/arm64/Makefile > @@ -82,11 +82,18 @@ endif > # compiler to generate them and consequently to break the single image contract > # we pass it only to the assembler. This option is utilized only in case of non > # integrated assemblers. > +ifneq ($(CONFIG_AS_HAS_ARMV8_4), y) > branch-prot-flags-$(CONFIG_AS_HAS_PAC) += -Wa,-march=armv8.3-a > endif > +endif I couldn't find a clear statement in the gas documentation on what happens if multiple -march options are passed. I think it's safer to avoid this here. > KBUILD_CFLAGS += $(branch-prot-flags-y) > > +ifeq ($(CONFIG_AS_HAS_ARMV8_4), y) > +# make sure to pass the newest target architecture to -march. > +KBUILD_CFLAGS += -Wa,-march=armv8.4-a > +endif I have a suspicion both of these options will break the LLVM integrated assembler but we don't officially support it on arm64 yet (-Wa, doesn't seem to get passed to the integrated asm). Thanks for the re-spin. -- Catalin