[PATCH, GCC/ARM, 10/10] Enable -mcmse Hi,
=== Context === This patch is part of a patch series to add support for Armv8.1-M Mainline Security Extensions architecture. Its purpose is to enable the -mcmse option now that support for Armv8.1-M Security Extension is complete. === Patch description === The patch is straightforward: it redefines ARMv8_1m_main as having the same features as ARMv8m_main (and thus as having the cmse feature) with the extra features represented by armv8_1m_main. It also removes the error for using -mcmse on Armv8.1-M Mainline. ChangeLog entry is as follows: *** gcc/ChangeLog *** 2019-10-23 Mihail-Calin Ionescu <mihail.ione...@arm.com> 2019-10-23 Thomas Preud'homme <thomas.preudho...@arm.com> * config/arm/arm-cpus.in (ARMv8_1m_main): Redefine as an extension to Armv8-M Mainline. * config/arm/arm.c (arm_options_perform_arch_sanity_checks): Remove error for using -mcmse when targeting Armv8.1-M Mainline. Testing: bootstrapped on arm-linux-gnueabihf and testsuite shows no regression. Is this ok for trunk? Best regards, Mihail ############### Attachment also inlined for ease of reply ############### diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in index 652f2a4be9388fd7a74f0ec4615a292fd1cfcd36..a845dd2f83a38519a1387515a2d4646761fb405f 100644 --- a/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in @@ -259,10 +259,7 @@ define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv define fgroup ARMv8m_main ARMv7m armv8 cmse define fgroup ARMv8r ARMv8a -# Feature cmse is omitted to disable Security Extensions support while secure -# code compiled by GCC does not preserve FP context as allowed by Armv8.1-M -# Mainline. -define fgroup ARMv8_1m_main ARMv7m armv8 armv8_1m_main +define fgroup ARMv8_1m_main ARMv8m_main armv8_1m_main # Useful combinations. define fgroup VFPv2 vfpv2 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index cabcce8c8bd11c5ff3516c3102c0305b865b00cb..0f19b4eb4ec4fcca2df10e1b8e0b79d1a1e0a93d 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -3742,9 +3742,6 @@ arm_options_perform_arch_sanity_checks (void) if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE) sorry ("__fp16 and no ldrh"); - if (use_cmse && arm_arch8_1m_main) - error ("ARMv8.1-M Mainline Security Extensions is unsupported"); - if (use_cmse && !arm_arch_cmse) error ("target CPU does not support ARMv8-M Security Extensions");
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in index 652f2a4be9388fd7a74f0ec4615a292fd1cfcd36..a845dd2f83a38519a1387515a2d4646761fb405f 100644 --- a/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in @@ -259,10 +259,7 @@ define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv define fgroup ARMv8m_main ARMv7m armv8 cmse define fgroup ARMv8r ARMv8a -# Feature cmse is omitted to disable Security Extensions support while secure -# code compiled by GCC does not preserve FP context as allowed by Armv8.1-M -# Mainline. -define fgroup ARMv8_1m_main ARMv7m armv8 armv8_1m_main +define fgroup ARMv8_1m_main ARMv8m_main armv8_1m_main # Useful combinations. define fgroup VFPv2 vfpv2 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index cabcce8c8bd11c5ff3516c3102c0305b865b00cb..0f19b4eb4ec4fcca2df10e1b8e0b79d1a1e0a93d 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -3742,9 +3742,6 @@ arm_options_perform_arch_sanity_checks (void) if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE) sorry ("__fp16 and no ldrh"); - if (use_cmse && arm_arch8_1m_main) - error ("ARMv8.1-M Mainline Security Extensions is unsupported"); - if (use_cmse && !arm_arch_cmse) error ("target CPU does not support ARMv8-M Security Extensions");