Ping? Best regards, Thomas On 25/08/17 12:18, Thomas Preudhomme wrote: > Hi, > > I've now also added a couple more changes: > > * size to_clear_bitmap according to maxregno to be consistent with its use > * use directly TARGET_HARD_FLOAT instead of clear_vfpregs > > > Original message below (ChangeLog unchanged): > > Function cmse_nonsecure_entry_clear_before_return has code to deal with > high VFP register (D16-D31) while ARMv8-M Baseline and Mainline both do > not support more than 16 double VFP registers (D0-D15). This makes this > security-sensitive code harder to read for not much benefit since > libcall for cmse_nonsecure_call functions do not deal with those high > VFP registers anyway. > > This commit gets rid of this code for simplicity and fixes 2 issues in > the same function: > > - stop the first loop when reaching maxregno to avoid dealing with VFP > registers if targetting Thumb-1 or using -mfloat-abi=soft > - include maxregno in that loop > > ChangeLog entry is as follows: > > *** gcc/ChangeLog *** > > 2017-06-13 Thomas Preud'homme > > * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security > Extensions with more than 16 double VFP registers. > (cmse_nonsecure_entry_clear_before_return): Remove second entry of > to_clear_mask and all code related to it. Replace the remaining > entry by a sbitmap and adapt code accordingly. > > Testing: Testsuite shows no regression when run for ARMv8-M Baseline and > ARMv8-M Mainline. > > Is this ok for trunk? > > Best regards, > > Thomas > > On 23/08/17 11:56, Thomas Preudhomme wrote: >> Ping? >> >> Best regards, >> >> Thomas >> >> On 17/07/17 17:25, Thomas Preudhomme wrote: >>> My bad, found an off-by-one error in the sizing of bitmaps. Please find fixed >>> patch in attachment. >>> >>> ChangeLog entry is unchanged: >>> >>> *** gcc/ChangeLog *** >>> >>> 2017-06-13 Thomas Preud'homme >>> >>> * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security >>> Extensions with more than 16 double VFP registers. >>> (cmse_nonsecure_entry_clear_before_return): Remove second entry of >>> to_clear_mask and all code related to it. Replace the remaining >>> entry by a sbitmap and adapt code accordingly. >>> >>> Best regards, >>> >>> Thomas >>> >>> On 17/07/17 09:52, Thomas Preudhomme wrote: >>>> Ping? >>>> >>>> Best regards, >>>> >>>> Thomas >>>> >>>> On 12/07/17 09:59, Thomas Preudhomme wrote: >>>>> Hi Richard, >>>>> >>>>> On 07/07/17 15:19, Richard Earnshaw (lists) wrote: >>>>>> >>>>>> Hmm, I think that's because really this is a partial conversion. It >>>>>> looks like doing this properly would involve moving that existing code >>>>>> to use sbitmaps as well. I think doing that would be better for >>>>>> long-term maintenance perspectives, but I'm not going to insist that you >>>>>> do it now. >>>>> >>>>> There's also the assert later but I've found a way to improve it slightly. >>>>> While switching to auto_sbitmap I also changed the code slightly to >>>>> allocate directly bitmaps to the right size. Since the change is probably >>>>> bigger than what you had in mind I'd appreciate if you can give me an OK >>>>> again. See updated patch in attachment. ChangeLog entry is unchanged: >>>>> >>>>> 2017-06-13 Thomas Preud'homme >>>>> >>>>> * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security >>>>> Extensions with more than 16 double VFP registers. >>>>> (cmse_nonsecure_entry_clear_before_return): Remove second entry of >>>>> to_clear_mask and all code related to it. Replace the remaining >>>>> entry by a sbitmap and adapt code accordingly. >>>>> >>>>>> >>>>>> As a result I'll let you take the call as to whether you keep this >>>>>> version or go back to your earlier patch. If you do decide to keep this >>>>>> version, then see the comment below. >>>>> >>>>> Given the changes I'm more happy with how the patch looks now and making it >>>>> go in can be a nice incentive to change other ARMv8-M Security Extension >>>>> related code later on. >>>>> >>>>> Best regards, >>>>> >>>>> Thomas