arm: Wire up the GIC with the platform in the base class

Move the (common) GIC initialization code that notifies the platform
code of the new GIC to the base class (BaseGic) instead of the Pl390
implementation.
This commit is contained in:
Andreas Sandberg 2015-02-16 03:34:18 -05:00
parent e17328a227
commit 0a2ee77616
2 changed files with 9 additions and 6 deletions

View file

@ -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()

View file

@ -47,7 +47,6 @@
#include "debug/IPI.hh"
#include "debug/Interrupt.hh"
#include "dev/arm/gic_pl390.hh"
#include "dev/arm/realview.hh"
#include "dev/terminal.hh"
#include "mem/packet.hh"
#include "mem/packet_access.hh"
@ -102,11 +101,6 @@ Pl390::Pl390(const Params *p)
bankedIntPriority[i][j] = 0;
}
}
RealView *rv = dynamic_cast<RealView*>(p->platform);
assert(rv);
rv->setGic(this);
}
Tick