summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2016-05-26 17:33:38 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2016-05-26 17:33:38 +0100
commite360f4db072593893dcbbbdaa5d322f7d5061b34 (patch)
treeb8fb8b130e02990b6ff0695572e3b0b14f9ef0e2
parente3e808416f92d5558d17731fd31c002d84d40181 (diff)
downloadgem5-e360f4db072593893dcbbbdaa5d322f7d5061b34.tar.xz
arm: Make EL checks available in SE mode
A lot of code assumes that it is possible to test what the highest EL is and if it is 64 bit. These calls currently don't work in SE mode since they rely on an instance of an ArmSystem. Change-Id: I0d1f261926a66ce3dc4fa116845ffb2a081446f2 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>
-rw-r--r--src/arch/arm/system.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index f4241aa3c..b61666339 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -219,13 +219,17 @@ ArmSystem::haveVirtualization(ThreadContext *tc)
bool
ArmSystem::highestELIs64(ThreadContext *tc)
{
- return dynamic_cast<ArmSystem *>(tc->getSystemPtr())->highestELIs64();
+ return FullSystem ?
+ dynamic_cast<ArmSystem *>(tc->getSystemPtr())->highestELIs64() :
+ true;
}
ExceptionLevel
ArmSystem::highestEL(ThreadContext *tc)
{
- return dynamic_cast<ArmSystem *>(tc->getSystemPtr())->highestEL();
+ return FullSystem ?
+ dynamic_cast<ArmSystem *>(tc->getSystemPtr())->highestEL() :
+ EL1;
}
Addr