[ARM] Remove ARMv8-M code for D17-D31
commit9dacb9f1fe4bba8457dbfc8c9743e824f1cb9e20
authorthopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Sep 2017 16:13:01 +0000 (28 16:13 +0000)
committerthopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Sep 2017 16:13:01 +0000 (28 16:13 +0000)
tree10f466de1de6f32fabf5185df6f377c391baa9ac
parentf407e6d8aca8b25a57b2985095b8e7033311a603
[ARM] Remove ARMv8-M code for D17-D31

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

2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@253256 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/arm/arm.c