[GCC-6.4][ARM][PATCH] enable FL_LPAE flag for armv7ve cores
Kyrill Tkachov
kyrylo.tkachov@foss.arm.com
Wed Nov 8 11:03:00 GMT 2017
Hi Andre,
On 08/11/17 05:12, Andre McCurdy wrote:
> The following commit added the FL_LPAE flag to FL_FOR_ARCH7VE, but
> neglected to also add it to the armv7ve compatible cores defined in
> arm-cores.def.
>
> https://github.com/gcc-mirror/gcc/commit/af2d9b9e58e8be576c53d94f30c48c68146b0c98
>
> The result is that gcc 6.4 now refuses to allow -march=armv7ve and
> -mcpu=XXX to be used together, even when -mcpu is set to an armv7ve
> compatible core:
>
> arm-linux-gnueabi-gcc -march=armv7ve -mcpu=cortex-a7 -Werror ...
> error: switch -mcpu=cortex-a7 conflicts with -march=armv7ve switch
> [-Werror]
>
> This is a regression relative to gcc 6.3.
>
> Fix by defining flags for armv7ve compatible cores directly from
> FL_FOR_ARCH7VE, rather than re-creating the armv7ve flags
> independently by combining FL_FOR_ARCH7A with the armv7ve specific
> FL_THUMB_DIV and FL_ARM_DIV flags.
>
Thank you for the patch. The change looks reasonable to me.
The way CPUs are defined internally was changed for GCC 7
so later branches won't have this problem.
How has this patch been tested?
This should be ready for committing with a proper
ChangeLog entry [1].
Thanks,
Kyrill
[1] https://gcc.gnu.org/codingconventions.html#ChangeLogs or have a look
in the ChangeLog files in the gcc/ directory for examples
> Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
> ---
> gcc/config/arm/arm-cores.def | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def
> index 829b839..ca37e6f 100644
> --- a/gcc/config/arm/arm-cores.def
> +++ b/gcc/config/arm/arm-cores.def
> @@ -145,12 +145,12 @@
> ARM_CORE("cortex-m0plus.small-multiply",cortexm0plussmallmultiply,
> cortexm0plus,
> /* V7 Architecture Processors */
> ARM_CORE("generic-armv7-a", genericv7a, genericv7a,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex)
> ARM_CORE("cortex-a5", cortexa5, cortexa5,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex_a5)
> -ARM_CORE("cortex-a7", cortexa7, cortexa7,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV |
> FL_FOR_ARCH7A), cortex_a7)
> +ARM_CORE("cortex-a7", cortexa7, cortexa7,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7VE), cortex_a7)
> ARM_CORE("cortex-a8", cortexa8, cortexa8,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex_a8)
> ARM_CORE("cortex-a9", cortexa9, cortexa9,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex_a9)
> -ARM_CORE("cortex-a12", cortexa12, cortexa17,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV |
> FL_FOR_ARCH7A), cortex_a12)
> -ARM_CORE("cortex-a15", cortexa15, cortexa15,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV |
> FL_FOR_ARCH7A), cortex_a15)
> -ARM_CORE("cortex-a17", cortexa17, cortexa17,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV |
> FL_FOR_ARCH7A), cortex_a12)
> +ARM_CORE("cortex-a12", cortexa12, cortexa17,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7VE), cortex_a12)
> +ARM_CORE("cortex-a15", cortexa15, cortexa15,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7VE), cortex_a15)
> +ARM_CORE("cortex-a17", cortexa17, cortexa17,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7VE), cortex_a12)
> ARM_CORE("cortex-r4", cortexr4, cortexr4,
> 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7R), cortex)
> ARM_CORE("cortex-r4f", cortexr4f, cortexr4f,
> 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7R), cortex)
> ARM_CORE("cortex-r5", cortexr5, cortexr5,
> 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_ARM_DIV | FL_FOR_ARCH7R),
> cortex)
> @@ -162,8 +162,8 @@ ARM_CORE("cortex-m3", cortexm3,
> cortexm3, 7M, ARM_FSET_MAKE_CPU1 (FL_LDSCHED |
> ARM_CORE("marvell-pj4", marvell_pj4, marvell_pj4,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), marvell_pj4)
>
> /* V7 big.LITTLE implementations */
> -ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV |
> FL_FOR_ARCH7A), cortex_a15)
> -ARM_CORE("cortex-a17.cortex-a7", cortexa17cortexa7, cortexa7,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV |
> FL_FOR_ARCH7A), cortex_a12)
> +ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7VE), cortex_a15)
> +ARM_CORE("cortex-a17.cortex-a7", cortexa17cortexa7, cortexa7,
> 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7VE), cortex_a12)
>
> /* V8 Architecture Processors */
> ARM_CORE("cortex-a32", cortexa32, cortexa53, 8A,
> ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a35)
> --
> 1.9.1
>
More information about the Gcc-patches
mailing list