summaryrefslogtreecommitdiff
path: root/src/dev/arm/base_gic.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/arm/base_gic.cc')
-rw-r--r--src/dev/arm/base_gic.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/dev/arm/base_gic.cc b/src/dev/arm/base_gic.cc
index 47e211077..ece8352d3 100644
--- a/src/dev/arm/base_gic.cc
+++ b/src/dev/arm/base_gic.cc
@@ -39,12 +39,21 @@
#include "dev/arm/base_gic.hh"
+#include "dev/arm/realview.hh"
#include "params/BaseGic.hh"
BaseGic::BaseGic(const Params *p)
: PioDevice(p),
platform(p->platform)
{
+ RealView *const rv(dynamic_cast<RealView*>(p->platform));
+ // The platform keeps track of the GIC that is hooked up to the
+ // system. Due to quirks in gem5's configuration system, the
+ // platform can't take a GIC as parameter. Instead, we need to
+ // register with the platform when a new GIC is created. If we
+ // can't find a platform, something is seriously wrong.
+ fatal_if(!rv, "GIC model can't register with platform code");
+ rv->setGic(this);
}
BaseGic::~BaseGic()