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 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? 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.
Attachment:
diff1
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |