summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuan Zhu <chuan.zhu@arm.com>2018-01-02 16:14:33 +0000
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2018-02-16 09:21:41 +0000
commitcf58af7cf2402a280d6789797a9bc956209bdc30 (patch)
tree6b7197e7a63a20d5b8c05095ffd1a42447759cf8
parent8da5e6b8b6fc1665edefffdf36c0aa7b9d53370d (diff)
downloadgem5-cf58af7cf2402a280d6789797a9bc956209bdc30.tar.xz
arch-arm: Fix Secure state check in checkFPAdvSIMDTrap64
The old code does secure state check by using "el <= EL2", which mis-considers secure EL1 and EL0. This patch fixes this by using inSecureState as in ARM ARM. Change-Id: I01d847c6af022c1462b16206cbc576f15f5569fd Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/8081 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r--src/arch/arm/insts/static_inst.cc4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/arch/arm/insts/static_inst.cc b/src/arch/arm/insts/static_inst.cc
index a7ba91e03..40a1fe4b3 100644
--- a/src/arch/arm/insts/static_inst.cc
+++ b/src/arch/arm/insts/static_inst.cc
@@ -629,9 +629,7 @@ ArmStaticInst::advSIMDFPAccessTrap64(ExceptionLevel el) const
Fault
ArmStaticInst::checkFPAdvSIMDTrap64(ThreadContext *tc, CPSR cpsr) const
{
- const ExceptionLevel el = (ExceptionLevel) (uint8_t)cpsr.el;
-
- if (ArmSystem::haveVirtualization(tc) && el <= EL2) {
+ if (ArmSystem::haveVirtualization(tc) && !inSecureState(tc)) {
HCPTR cptrEnCheck = tc->readMiscReg(MISCREG_CPTR_EL2);
if (cptrEnCheck.tfp)
return advSIMDFPAccessTrap64(EL2);