This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 27/10/16 11:01, Kyrill Tkachov wrote: > > On 27/10/16 10:53, Andre Vieira (lists) wrote: >> On 26/10/16 14:00, Kyrill Tkachov wrote: >>> On 26/10/16 10:12, Kyrill Tkachov wrote: >>>> Hi Andre, thanks for resending them. >>>> >>>> On 25/10/16 17:26, Andre Vieira (lists) wrote: >>>>> On 24/08/16 12:00, Andre Vieira (lists) wrote: >>>>>> On 25/07/16 14:19, Andre Vieira (lists) wrote: >>>>>>> This patch adds the support of the '-mcmse' option to enable >>>>>>> ARMv8-M's >>>>>>> Security Extensions and supports the following intrinsics: >>>>>>> cmse_TT >>>>>>> cmse_TT_fptr >>>>>>> cmse_TTT >>>>>>> cmse_TTT_fptr >>>>>>> cmse_TTA >>>>>>> cmse_TTA_fptr >>>>>>> cmse_TTAT >>>>>>> cmse_TTAT_fptr >>>>>>> cmse_check_address_range >>>>>>> cmse_check_pointed_object >>>>>>> cmse_is_nsfptr >>>>>>> cmse_nsfptr_create >>>>>>> >>>>>>> It also defines the mandatory cmse_address_info struct and the >>>>>>> __ARM_FEATURE_CMSE macro. >>>>>>> See Chapter 4, Sections 5.2, 5.3 and 5.6 of ARM®v8-M Security >>>>>>> Extensions: Requirements on Development Tools >>>>>>> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). >>>>>>> >>>>>>> >>>>>>> >>>>>>> *** gcc/ChangeLog *** >>>>>>> 2016-07-25 Andre Vieira <andre.simoesdiasvieira@arm.com> >>>>>>> Thomas Preud'homme <thomas.preudhomme@arm.com> >>>>>>> >>>>>>> * config.gcc (extra_headers): Added arm_cmse.h. >>>>>>> * config/arm/arm-arches.def (ARM_ARCH): >>>>>>> (armv8-m): Add FL2_CMSE. >>>>>>> (armv8-m.main): Likewise. >>>>>>> (armv8-m.main+dsp): Likewise. >>>>>>> * config/arm/arm-c.c >>>>>>> (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. >>>>>>> * config/arm/arm-protos.h >>>>>>> (arm_is_constant_pool_ref): Define FL2_CMSE. >>>>>>> * config/arm.c (arm_arch_cmse): New. >>>>>>> (arm_option_override): New error for unsupported cmse >>>>>>> target. >>>>>>> * config/arm/arm.h (arm_arch_cmse): New. >>>>>>> * config/arm/arm.opt (mcmse): New. >>>>>>> * doc/invoke.texi (ARM Options): Add -mcmse. >>>>>>> * config/arm/arm_cmse.h: New file. >>>>>>> >>>>>>> *** libgcc/ChangeLog *** >>>>>>> 2016-07-25 Andre Vieira <andre.simoesdiasvieira@arm.com> >>>>>>> Thomas Preud'homme <thomas.preudhomme@arm.com> >>>>>>> >>>>>>> * config/arm/cmse.c: Likewise. >>>>>>> * config/arm/t-arm (HAVE_CMSE): New. >>>>>>> >>>>>>> *** gcc/testsuite/ChangeLog *** >>>>>>> 2016-07-25 Andre Vieira <andre.simoesdiasvieira@arm.com> >>>>>>> Thomas Preud'homme <thomas.preudhomme@arm.com> >>>>>>> >>>>>>> * gcc.target/arm/cmse/cmse.exp: New. >>>>>>> * gcc.target/arm/cmse/cmse-1.c: New. >>>>>>> * gcc.target/arm/cmse/cmse-12.c: New. >>>>>>> * lib/target-supports.exp >>>>>>> (check_effective_target_arm_cmse_ok): New. >>> >>> Just remembered, new effective target checks should be documented in >>> sourcebuild.texi >>> Kyrill >>> >>>>>> Added more documentation as requested. >>>>>> >>>>>> This patch adds the support of the '-mcmse' option to enable >>>>>> ARMv8-M's >>>>>> Security Extensions and supports the following intrinsics: >>>>>> cmse_TT >>>>>> cmse_TT_fptr >>>>>> cmse_TTT >>>>>> cmse_TTT_fptr >>>>>> cmse_TTA >>>>>> cmse_TTA_fptr >>>>>> cmse_TTAT >>>>>> cmse_TTAT_fptr >>>>>> cmse_check_address_range >>>>>> cmse_check_pointed_object >>>>>> cmse_is_nsfptr >>>>>> cmse_nsfptr_create >>>>>> >>>>>> It also defines the mandatory cmse_address_info struct and the >>>>>> __ARM_FEATURE_CMSE macro. >>>>>> See Chapter 4, Sections 5.2, 5.3 and 5.6 of ARM®v8-M Security >>>>>> Extensions: Requirements on Development Tools >>>>>> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/index.html). >>>>>> >>>>>> >>>>>> >>>>>> *** gcc/ChangeLog *** >>>>>> 2016-07-xx Andre Vieira <andre.simoesdiasvieira@arm.com> >>>>>> Thomas Preud'homme <thomas.preudhomme@arm.com> >>>>>> >>>>>> * config.gcc (extra_headers): Added arm_cmse.h. >>>>>> * config/arm/arm-arches.def (ARM_ARCH): >>>>>> (armv8-m): Add FL2_CMSE. >>>>>> (armv8-m.main): Likewise. >>>>>> (armv8-m.main+dsp): Likewise. >>>>>> * config/arm/arm-c.c >>>>>> (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. >>>>>> * config/arm/arm-protos.h >>>>>> (arm_is_constant_pool_ref): Define FL2_CMSE. >>>>>> * config/arm.c (arm_arch_cmse): New. >>>>>> (arm_option_override): New error for unsupported cmse >>>>>> target. >>>>>> * config/arm/arm.h (arm_arch_cmse): New. >>>>>> * config/arm/arm.opt (mcmse): New. >>>>>> * doc/invoke.texi (ARM Options): Add -mcmse. >>>>>> * doc/extend.texi (ARM ARMv8-M Security Extensions): Add >>>>>> section. >>>>>> * config/arm/arm_cmse.h: New file. >>>>>> >>>>>> *** libgcc/ChangeLog *** >>>>>> 2016-07-xx Andre Vieira <andre.simoesdiasvieira@arm.com> >>>>>> Thomas Preud'homme <thomas.preudhomme@arm.com> >>>>>> * config/arm/cmse.c: Likewise. >>>>>> * config/arm/t-arm (HAVE_CMSE): New. >>>>>> >>>>>> >>>>>> *** gcc/testsuite/ChangeLog *** >>>>>> 2016-07-xx Andre Vieira <andre.simoesdiasvieira@arm.com> >>>>>> Thomas Preud'homme <thomas.preudhomme@arm.com> >>>>>> >>>>>> * gcc.target/arm/cmse/cmse.exp: New. >>>>>> * gcc.target/arm/cmse/cmse-1.c: New. >>>>>> * gcc.target/arm/cmse/cmse-12.c: New. >>>>>> * lib/target-supports.exp >>>>>> (check_effective_target_arm_cmse_ok): New. >>>>>> >>>>> Hi, >>>>> >>>>> Rebased previous patch on top of trunk as requested. No changes to >>>>> ChangeLog. >>>>> >>>>> Cheers, >>>>> Andre >>>> diff --git a/gcc/config/arm/arm_cmse.h b/gcc/config/arm/arm_cmse.h >>>> new file mode 100644 >>>> index >>>> 0000000000000000000000000000000000000000..b4232937c6ae04754a6bbc513b143672a4be5530 >>>> >>>> >>>> --- /dev/null >>>> +++ b/gcc/config/arm/arm_cmse.h >>>> >>>> <snip> >>>> >>>> + >>>> +#if __ARM_FEATURE_CMSE & 2 >>>> + >>>> +#define cmse_TTA_fptr(p) (__cmse_TTA_fptr ((__cmse_fptr)(p))) >>>> + >>>> +__extension__ static __inline __attribute__ ((__always_inline__)) >>>> +cmse_address_info_t >>>> +__cmse_TTA_fptr (__cmse_fptr __p) >>>> +__CMSE_TT_ASM (a) >>>> + >>>> +__extension__ static __inline __attribute__ ((__always_inline__)) >>>> +cmse_address_info_t >>>> +cmse_TTA (void *__p) >>>> +__CMSE_TT_ASM (a) >>>> + >>>> +#define cmse_TTAT_fptr(p) (__cmse_TTAT_fptr ((__cmse_fptr)(p))) >>>> + >>>> +__extension__ static __inline cmse_address_info_t >>>> +__attribute__ ((__always_inline__)) >>>> +__cmse_TTAT_fptr (__cmse_fptr __p) >>>> +__CMSE_TT_ASM (at) >>>> + >>>> +__extension__ static __inline cmse_address_info_t >>>> +__attribute__ ((__always_inline__)) >>>> +cmse_TTAT (void *__p) >>>> +__CMSE_TT_ASM (at) >>>> + >>>> +#define CMSE_AU_NONSECURE 2 >>>> +#define CMSE_MPU_NONSECURE 16 >>>> +#define CMSE_NONSECURE 18 >>>> + >>>> +#endif /* __ARM_FEATURE_CMSE & 2 */ >>>> + >>>> +#define CMSE_MPU_UNPRIV 4 >>>> +#define CMSE_MPU_READWRITE 1 >>>> +#define CMSE_MPU_READ 8 >>>> + >>>> +__extension__ void * >>>> +cmse_check_address_range (void *, size_t, int); >>>> + >>>> +#define cmse_check_pointed_object(p, f) \ >>>> + ((typeof ((p))) cmse_check_address_range ((p), sizeof (*(p)), (f))) >>>> + >>>> +#define cmse_nsfptr_create(p) ((typeof ((p))) ((intptr_t) (p) & ~1)) >>>> + >>>> +#define cmse_is_nsfptr(p) (!((intptr_t) (p) & 1)) >>>> + >>>> +#endif /* __ARM_FEATURE_CMSE & 1 */ >>>> >>>> From my reading of the spec >>>> (http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/ECM0359818_armv8m_security_extensions_reqs_on_dev_tools_1_0.pdf) >>>> >>>> >>>> cmse_nsfptr_create and cmse_is_nsfptr should be defined if bit 1 of >>>> __ARM_FEATURE_CMSE is set. >>>> But in your patch they fall under the "#if __ARM_FEATURE_CMSE & 1" >>>> check which checks bit 0. >>>> They should be in the "__ARM_FEATURE_CMSE & 2" block. Please double >>>> check the other defines against the SPEC to make sure they >>>> match the feature bit in __ARM_FEATURE_CMSE. >>>> >>>> The patch is ok with that resolved if bootstrap and test on a normal >>>> arm-none-linux-gnueabihf configuration >>>> shows no problems. >>>> Thanks, >>>> Kyrill >>>> >> Hi, >> >> Reworked comments. >> >> Is this OK? > > Yes, thanks. > Please hold off committing until the whole series is approved. > Kyrill > >> Cheers, >> Andre >> >> *** gcc/ChangeLog *** >> 2016-10-27 Andre Vieira <andre.simoesdiasvieira@arm.com> >> Thomas Preud'homme <thomas.preudhomme@arm.com> >> >> * config.gcc (extra_headers): Added arm_cmse.h. >> * config/arm/arm-arches.def (ARM_ARCH): >> (armv8-m): Add FL2_CMSE. >> (armv8-m.main): Likewise. >> (armv8-m.main+dsp): Likewise. >> * config/arm/arm-c.c >> (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. >> * config/arm/arm-protos.h >> (arm_is_constant_pool_ref): Define FL2_CMSE. >> * config/arm.c (arm_arch_cmse): New. >> (arm_option_override): New error for unsupported cmse target. >> * config/arm/arm.h (arm_arch_cmse): New. >> * config/arm/arm.opt (mcmse): New. >> * doc/invoke.texi (ARM Options): Add -mcmse. >> * config/arm/arm_cmse.h: New file. >> * doc/sourcebuild.texi (arm_cmse_ok): Add new effective target. >> >> *** libgcc/ChangeLog *** >> 2016-10-27 Andre Vieira <andre.simoesdiasvieira@arm.com> >> Thomas Preud'homme <thomas.preudhomme@arm.com> >> >> * config/arm/cmse.c: Likewise. >> * config/arm/t-arm (HAVE_CMSE): New. >> >> *** gcc/testsuite/ChangeLog *** >> 2016-10-27 Andre Vieira <andre.simoesdiasvieira@arm.com> >> Thomas Preud'homme <thomas.preudhomme@arm.com> >> >> * gcc.target/arm/cmse/cmse.exp: New. >> * gcc.target/arm/cmse/cmse-1.c: New. >> * gcc.target/arm/cmse/cmse-12.c: New. >> * lib/target-supports.exp >> (check_effective_target_arm_cmse_ok): New. >> > Hi, Backported this to the embedded-6-branch in revision r243246. Cheers, Andre gcc/ChangeLog.arm: 2016-12-05 Andre Vieira <andre.simoesdiasvieira@arm.com> Backport from mainline 2016-12-02 Andre Vieira <andre.simoesdiasvieira@arm.com> Thomas Preud'homme <thomas.preudhomme@arm.com> * config.gcc (extra_headers): Added arm_cmse.h. * config/arm/arm-arches.def (ARM_ARCH): (armv8-m): Add FL2_CMSE. (armv8-m.main): Likewise. (armv8-m.main+dsp): Likewise. * config/arm/arm-c.c (arm_cpu_builtins): Added __ARM_FEATURE_CMSE macro. * config/arm/arm-flags.h: Define FL2_CMSE. * config/arm.c (arm_arch_cmse): New. (arm_option_override): New error for unsupported cmse target. * config/arm/arm.h (arm_arch_cmse): New. * config/arm/arm.opt (mcmse): New. * config/arm/arm_cmse.h: New file. * doc/invoke.texi (ARM Options): Add -mcmse. * doc/sourcebuild.texi (arm_cmse_ok): Add new effective target. * doc/extend.texi: Add ARMv8-M Security Extensions entry. gcc/testsuite/ChangeLog.arm: 2016-12-05 Andre Vieira <andre.simoesdiasvieira@arm.com> Backport from mainline 2016-12-02 Andre Vieira <andre.simoesdiasvieira@arm.com> Thomas Preud'homme <thomas.preudhomme@arm.com> * gcc.target/arm/cmse/cmse.exp: New. * gcc.target/arm/cmse/cmse-1.c: New. * gcc.target/arm/cmse/cmse-12.c: New. * lib/target-supports.exp (check_effective_target_arm_cmse_ok): New. libgcc/ChangeLog.arm: 2016-12-05 Andre Vieira <andre.simoesdiasvieira@arm.com> Backport from mainline 2016-12-02 Andre Vieira <andre.simoesdiasvieira@arm.com> Thomas Preud'homme <thomas.preudhomme@arm.com> * config/arm/t-arm (HAVE_CMSE): New. * config/arm/cmse.c: New.
Attachment:
diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |