qemu/target
Peter Maydell 02ac2f7f61 target/arm: Avoid bogus NSACR traps on M-profile without Security Extension
In Arm v8.0 M-profile CPUs without the Security Extension and also in
v7M CPUs, there is no NSACR register. However, the code we have to handle
the FPU does not always check whether the ARM_FEATURE_M_SECURITY bit
is set before testing whether env->v7m.nsacr permits access to the
FPU. This means that for a CPU with an FPU but without the Security
Extension we would always take a bogus fault when trying to stack
the FPU registers on an exception entry.

We could fix this by adding extra feature bit checks for all uses,
but it is simpler to just make the internal value of nsacr 0xcff
("all non-secure accesses allowed"), since this is not guest
visible when the Security Extension is not present. This allows
us to continue to follow the Arm ARM pseudocode which takes a
similar approach. (In particular, in the v8.1 Arm ARM the register
is documented as reading as 0xcff in this configuration.)

Fixes: https://bugs.launchpad.net/qemu/+bug/1838475
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Damien Hedde <damien.hedde@greensocs.com>
Message-id: 20190801105742.20036-1-peter.maydell@linaro.org
2019-08-02 17:18:16 +01:00
..
alpha Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
arm target/arm: Avoid bogus NSACR traps on M-profile without Security Extension 2019-08-02 17:18:16 +01:00
cris Supply missing header guards 2019-06-12 13:20:21 +02:00
hppa hppa: Delete unused hppa_cpu_list() function 2019-07-05 17:08:03 -03:00
i386 i386: Fix Snowridge CPU model name and features 2019-07-29 13:08:02 -03:00
lm32 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
m68k m68k comments break patch submission due to being incorrectly formatted 2019-06-26 17:14:39 +02:00
microblaze Supply missing header guards 2019-06-12 13:20:21 +02:00
mips target/mips: Fix emulation of MSA pack instructions on big endian hosts 2019-07-22 19:33:09 +02:00
moxie Supply missing header guards 2019-06-12 13:20:21 +02:00
nios2 hmp: Move hmp.h to include/monitor/ 2019-07-02 07:19:45 +02:00
openrisc general: Replace global smp variables with smp machine properties 2019-07-05 17:07:36 -03:00
ppc Monitor patches for 2019-07-02 2019-07-03 00:16:43 +01:00
riscv RISC-V: Clear load reservations on context switch and SC 2019-06-25 22:37:04 -07:00
s390x s390x/cpumodel: change internal name of vxpdeh to match description 2019-07-16 11:29:38 +02:00
sh4 hmp: Move hmp.h to include/monitor/ 2019-07-02 07:19:45 +02:00
sparc hmp: Move hmp.h to include/monitor/ 2019-07-02 07:19:45 +02:00
tilegx Normalize position of header guard 2019-06-12 13:20:20 +02:00
tricore tricore: add QSEED instruction 2019-06-25 15:02:07 +02:00
unicore32 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
xtensa hmp: Move hmp.h to include/monitor/ 2019-07-02 07:19:45 +02:00