summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorAdrian Herrera <adrian.herrera@arm.com>2019-10-25 19:21:59 +0100
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2019-11-01 09:41:44 +0000
commit3783d653690b654e40091f93392cecea93e15032 (patch)
tree560a987ed70aee4896f95ffd8f6ec5b12674a124 /src/arch
parent092ab7f5ca37f0dbaa73446ac0a0db394ae83acc (diff)
downloadgem5-3783d653690b654e40091f93392cecea93e15032.tar.xz
arch-arm: generic method for getting an ArmSystem
This patch provides a generic method for casting a System object into an ArmSystem object. This is specially useful in dev-arm, since devices by default obtain a generic System reference which needs to be casted to use ArmSystem-specific functionality. Change-Id: Ib100002413cb48cd93772dcf38f13be65badd1d3 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22426 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm/system.cc8
-rw-r--r--src/arch/arm/system.hh7
2 files changed, 15 insertions, 0 deletions
diff --git a/src/arch/arm/system.cc b/src/arch/arm/system.cc
index bf2881026..6add9c065 100644
--- a/src/arch/arm/system.cc
+++ b/src/arch/arm/system.cc
@@ -174,6 +174,14 @@ ArmSystem::initState()
}
}
+ArmSystem *
+ArmSystem::getArmSystem(System *sys)
+{
+ ArmSystem *a_sys = dynamic_cast<ArmSystem *>(sys);
+ assert(a_sys);
+ return a_sys;
+}
+
ArmSystem*
ArmSystem::getArmSystem(ThreadContext *tc)
{
diff --git a/src/arch/arm/system.hh b/src/arch/arm/system.hh
index 46c58e8a1..a9048051e 100644
--- a/src/arch/arm/system.hh
+++ b/src/arch/arm/system.hh
@@ -285,6 +285,13 @@ class ArmSystem : public System
bool haveSemihosting() const { return semihosting != nullptr; }
/**
+ * Casts the provided System object into a valid ArmSystem, it fails
+ * otherwise.
+ * @param sys System object to cast
+ */
+ static ArmSystem *getArmSystem(System *sys);
+
+ /**
* Returns a valid ArmSystem pointer if using ARM ISA, it fails
* otherwise.
*/