gem5
v20.0.0.2
|
#include <generic_timer.hh>
Classes | |
struct | EventStream |
Public Member Functions | |
CoreTimers (GenericTimer &_parent, ArmSystem &system, unsigned cpu, ArmInterruptPin *_irqPhysS, ArmInterruptPin *_irqPhysNS, ArmInterruptPin *_irqVirt, ArmInterruptPin *_irqHyp) | |
void | physEventStreamCallback () |
void | virtEventStreamCallback () |
void | eventStreamCallback () const |
void | schedNextEvent (EventStream &ev_stream, ArchTimer &timer) |
void | notify (void) override |
Called from the SystemCounter when a change in counting speed occurred Events should be rescheduled properly inside this member function. More... | |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
![]() | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. More... | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. More... | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Attributes | |
GenericTimer & | parent |
Generic Timer parent reference. More... | |
uint32_t | cntfrq |
System counter frequency as visible from this core. More... | |
CNTKCTL | cntkctl |
Kernel control register. More... | |
CNTHCTL | cnthctl |
Hypervisor control register. More... | |
ThreadContext * | threadContext |
Thread (HW) context associated to this PE implementation. More... | |
ArmInterruptPin const * | irqPhysS |
ArmInterruptPin const * | irqPhysNS |
ArmInterruptPin const * | irqVirt |
ArmInterruptPin const * | irqHyp |
ArchTimerKvm | physS |
ArchTimerKvm | physNS |
ArchTimerKvm | virt |
ArchTimerKvm | hyp |
EventStream | physEvStream |
EventStream | virtEvStream |
Private Member Functions | |
CoreTimers (const CoreTimers &c) | |
Additional Inherited Members | |
![]() | |
static const std::string & | currentSection () |
Gets the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
static void | unserializeGlobals (CheckpointIn &cp) |
Definition at line 291 of file generic_timer.hh.
GenericTimer::CoreTimers::CoreTimers | ( | GenericTimer & | _parent, |
ArmSystem & | system, | ||
unsigned | cpu, | ||
ArmInterruptPin * | _irqPhysS, | ||
ArmInterruptPin * | _irqPhysNS, | ||
ArmInterruptPin * | _irqVirt, | ||
ArmInterruptPin * | _irqHyp | ||
) |
Definition at line 692 of file generic_timer.cc.
References csprintf(), SimObject::name(), parent, physEventStreamCallback(), virtEventStreamCallback(), and virtEvStream.
|
private |
void GenericTimer::CoreTimers::eventStreamCallback | ( | ) | const |
Definition at line 743 of file generic_timer.cc.
References ThreadContext::getCpuPtr(), ArmISA::sendEvent(), threadContext, ThreadContext::threadId(), and BaseCPU::wakeup().
Referenced by physEventStreamCallback(), and virtEventStreamCallback().
|
overridevirtual |
Called from the SystemCounter when a change in counting speed occurred Events should be rescheduled properly inside this member function.
Implements SystemCounterListener.
Definition at line 758 of file generic_timer.cc.
References physEvStream, physNS, schedNextEvent(), virt, and virtEvStream.
void GenericTimer::CoreTimers::physEventStreamCallback | ( | ) |
Definition at line 729 of file generic_timer.cc.
References eventStreamCallback(), physEvStream, physNS, and schedNextEvent().
Referenced by CoreTimers().
void GenericTimer::CoreTimers::schedNextEvent | ( | EventStream & | ev_stream, |
ArchTimer & | timer | ||
) |
Definition at line 750 of file generic_timer.cc.
References GenericTimer::CoreTimers::EventStream::event, GenericTimer::CoreTimers::EventStream::eventTargetValue(), parent, EventManager::reschedule(), ArchTimer::value(), and ArchTimer::whenValue().
Referenced by notify(), physEventStreamCallback(), and virtEventStreamCallback().
|
overridevirtual |
Serialize an object.
Output an object's state into the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Definition at line 765 of file generic_timer.cc.
References cntfrq, cnthctl, cntkctl, GenericTimer::CoreTimers::EventStream::event, hyp, physEvStream, physNS, physS, Event::scheduled(), SERIALIZE_SCALAR, Serializable::serializeSection(), GenericTimer::CoreTimers::EventStream::transitionBit, GenericTimer::CoreTimers::EventStream::transitionTo, virt, virtEvStream, and Event::when().
|
overridevirtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Definition at line 796 of file generic_timer.cc.
References cntfrq, cnthctl, cntkctl, GenericTimer::CoreTimers::EventStream::event, hyp, parent, physEvStream, physNS, physS, EventManager::reschedule(), GenericTimer::CoreTimers::EventStream::transitionBit, GenericTimer::CoreTimers::EventStream::transitionTo, UNSERIALIZE_SCALAR, Serializable::unserializeSection(), virt, and virtEvStream.
void GenericTimer::CoreTimers::virtEventStreamCallback | ( | ) |
Definition at line 736 of file generic_timer.cc.
References eventStreamCallback(), schedNextEvent(), virt, and virtEvStream.
Referenced by CoreTimers().
uint32_t GenericTimer::CoreTimers::cntfrq |
System counter frequency as visible from this core.
Definition at line 302 of file generic_timer.hh.
Referenced by GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), and unserialize().
CNTHCTL GenericTimer::CoreTimers::cnthctl |
Hypervisor control register.
Definition at line 308 of file generic_timer.hh.
Referenced by GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), and unserialize().
CNTKCTL GenericTimer::CoreTimers::cntkctl |
Kernel control register.
Definition at line 305 of file generic_timer.hh.
Referenced by GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), and unserialize().
ArchTimerKvm GenericTimer::CoreTimers::hyp |
Definition at line 321 of file generic_timer.hh.
Referenced by GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), and unserialize().
ArmInterruptPin const* GenericTimer::CoreTimers::irqHyp |
Definition at line 316 of file generic_timer.hh.
ArmInterruptPin const* GenericTimer::CoreTimers::irqPhysNS |
Definition at line 314 of file generic_timer.hh.
ArmInterruptPin const* GenericTimer::CoreTimers::irqPhysS |
Definition at line 313 of file generic_timer.hh.
ArmInterruptPin const* GenericTimer::CoreTimers::irqVirt |
Definition at line 315 of file generic_timer.hh.
GenericTimer& GenericTimer::CoreTimers::parent |
Generic Timer parent reference.
Definition at line 299 of file generic_timer.hh.
Referenced by CoreTimers(), GenericTimerISA::readMiscReg(), schedNextEvent(), GenericTimerISA::setMiscReg(), and unserialize().
EventStream GenericTimer::CoreTimers::physEvStream |
Definition at line 344 of file generic_timer.hh.
Referenced by notify(), physEventStreamCallback(), serialize(), GenericTimer::setMiscReg(), and unserialize().
ArchTimerKvm GenericTimer::CoreTimers::physNS |
Definition at line 319 of file generic_timer.hh.
Referenced by notify(), physEventStreamCallback(), GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), and unserialize().
ArchTimerKvm GenericTimer::CoreTimers::physS |
Definition at line 318 of file generic_timer.hh.
Referenced by GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), and unserialize().
ThreadContext* GenericTimer::CoreTimers::threadContext |
Thread (HW) context associated to this PE implementation.
Definition at line 311 of file generic_timer.hh.
Referenced by eventStreamCallback().
ArchTimerKvm GenericTimer::CoreTimers::virt |
Definition at line 320 of file generic_timer.hh.
Referenced by notify(), GenericTimer::readMiscReg(), serialize(), GenericTimer::setMiscReg(), unserialize(), and virtEventStreamCallback().
EventStream GenericTimer::CoreTimers::virtEvStream |
Definition at line 345 of file generic_timer.hh.
Referenced by CoreTimers(), notify(), serialize(), GenericTimer::setMiscReg(), unserialize(), and virtEventStreamCallback().