summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Herrera <adrian.herrera@arm.com>2019-11-29 17:49:07 +0000
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2020-01-15 09:26:10 +0000
commit5698c2b52d756d5f11222559b75a038fea0cf52d (patch)
tree0a1da00de4bb6e244d896e92c752ef07efd136f2
parent251cbd34b82670ec8038bfee6d050f080e9b3981 (diff)
downloadgem5-5698c2b52d756d5f11222559b75a038fea0cf52d.tar.xz
arch-arm: ELIsInHost, check VHE and SecEL2
This patch modifies ELIsInHost to correctly check for VHE and Secure EL2 implementation. Change-Id: I947dddfc6761794493fef3d59b3b35754d07ed6b Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24046 Reviewed-by: Ciro Santilli <ciro.santilli@arm.com> Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
-rw-r--r--src/arch/arm/utility.cc8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/arch/arm/utility.cc b/src/arch/arm/utility.cc
index a82fec495..e3d64fadf 100644
--- a/src/arch/arm/utility.cc
+++ b/src/arch/arm/utility.cc
@@ -342,11 +342,9 @@ ELIs32(ThreadContext *tc, ExceptionLevel el)
bool
ELIsInHost(ThreadContext *tc, ExceptionLevel el)
{
- if (!ArmSystem::haveVirtualization(tc)) {
- return false;
- }
- HCR hcr = tc->readMiscReg(MISCREG_HCR_EL2);
- return (!isSecureBelowEL3(tc) && !ELIs32(tc, EL2) && hcr.e2h == 1 &&
+ const HCR hcr = tc->readMiscReg(MISCREG_HCR_EL2);
+ return ((IsSecureEL2Enabled(tc) || !isSecureBelowEL3(tc)) &&
+ HaveVirtHostExt(tc) && !ELIs32(tc, EL2) && hcr.e2h == 1 &&
(el == EL2 || (el == EL0 && hcr.tge == 1)));
}