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:
parent
e17328a227
commit
0a2ee77616
2 changed files with 9 additions and 6 deletions
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue