target/arm: Set FPCCR.S when executing M-profile floating point insns
commit6d60c67a1a03be32c3342aff6604cdc5095088d1
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 29 Apr 2019 16:36:01 +0000 (29 17:36 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 29 Apr 2019 16:36:01 +0000 (29 17:36 +0100)
tree70a9f2bac311ba4d98f16ebf51ec72bd9f91064d
parentea7ac69d124c94c6e5579145e727adec9ccbefef
target/arm: Set FPCCR.S when executing M-profile floating point insns

The M-profile FPCCR.S bit indicates the security status of
the floating point context. In the pseudocode ExecuteFPCheck()
function it is unconditionally set to match the current
security state whenever a floating point instruction is
executed.

Implement this by adding a new TB flag which tracks whether
FPCCR.S is different from the current security state, so
that we only need to emit the code to update it in the
less-common case when it is not already set correctly.

Note that we will add the handling for the other work done
by ExecuteFPCheck() in later commits.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20190416125744.27770-19-peter.maydell@linaro.org
target/arm/cpu.h
target/arm/helper.c
target/arm/translate.c
target/arm/translate.h