Applied: [I/linux][PATCH] UBUNTU: SAUCE: arm: Fix instruction set selection for GCC 11

Kamal Mostafa kamal at canonical.com
Mon Aug 9 17:06:18 UTC 2021


Applied to impish/master-next.  Thanks!

 -Kamal

On Mon, Aug 09, 2021 at 05:22:38PM +0200, Juerg Haefliger wrote:
> BugLink: https://bugs.launchpad.net/bugs/1939308
> 
> GCC 11 on ARM now complains like the following when trying to determine if
> an arch is supported. Presumably because it enforces the default option
> which (in our case) is '--with-float=hard'?
>   $ arm-linux-gnueabihf-gcc-11 -march=armv7-a -c -x c /dev/null
>   cc1: error: ‘-mfloat-abi=hard’: selected architecture lacks an FPU
> 
> Due to that, the kernel build system selects the wrong compiler options
> which throws errros like this:
>   /tmp/ccrHfZPj.s: Assembler messages:
>   /tmp/ccrHfZPj.s:116: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:150: Error: selected processor does not support `isb ' in ARM mode
>   /tmp/ccrHfZPj.s:160: Error: selected processor does not support `mrrc p15,1,r4,r5,c14' in ARM mode
>   /tmp/ccrHfZPj.s:245: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:503: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:527: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:698: Error: selected processor does not support `dmb ish' in ARM mode
>   /tmp/ccrHfZPj.s:731: Error: selected processor does not support `isb ' in ARM mode
> 
> Fix that by moving the option '-msoft-float' up before the
> 'arch-$(CONFIG_CPU_<foo>)' instruction selection macros.
> 
> Signed-off-by: Juerg Haefliger <juergh at canonical.com>
> ---
>  arch/arm/Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 415c3514573a..efa9518223b0 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -56,6 +56,9 @@ endif
>  #
>  KBUILD_CFLAGS	+= $(call cc-option,-fno-ipa-sra)
>  
> +# Need -msoft-float for gcc 11 for the below instruction set selection
> +KBUILD_CFLAGS	+= -msoft-float
> +
>  # This selects which instruction set is used.
>  # Note that GCC does not numerically define an architecture version
>  # macro, but instead defines a whole series of macros which makes
> @@ -125,7 +128,7 @@ AFLAGS_ISA	:=$(CFLAGS_ISA)
>  endif
>  
>  # Need -Uarm for gcc < 3.x
> -KBUILD_CFLAGS	+=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
> +KBUILD_CFLAGS	+=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -Uarm
>  KBUILD_AFLAGS	+=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
>  
>  CHECKFLAGS	+= -D__arm__
> -- 
> 2.30.2
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team



More information about the kernel-team mailing list