gem5
v20.1.0.0
|
Per-CPU architected timer. More...
#include <generic_timer.hh>
Public Member Functions | |
ArchTimer (const std::string &name, SimObject &parent, SystemCounter &sysctr, ArmInterruptPin *interrupt) | |
std::string | name () const |
Returns the timer name. More... | |
uint64_t | compareValue () const |
Returns the CompareValue view of the timer. More... | |
void | setCompareValue (uint64_t val) |
Sets the CompareValue view of the timer. More... | |
uint32_t | timerValue () const |
Returns the TimerValue view of the timer. More... | |
void | setTimerValue (uint32_t val) |
Sets the TimerValue view of the timer. More... | |
uint32_t | control () const |
Sets the control register. More... | |
void | setControl (uint32_t val) |
uint64_t | offset () const |
void | setOffset (uint64_t val) |
uint64_t | value () const |
Returns the value of the counter which this timer relies on. More... | |
Tick | whenValue (uint64_t target_val) |
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... | |
DrainState | drain () override |
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight. More... | |
void | drainResume () override |
Resume execution after a successful drain. More... | |
Public Member Functions inherited from Serializable | |
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 Member Functions inherited from Drainable | |
DrainState | drainState () const |
Return the current drain state of an object. More... | |
virtual void | notifyFork () |
Notify a child process of a fork. More... | |
Protected Member Functions | |
BitUnion32 (ArchTimerCtrl) Bitfield< 0 > enable | |
Control register. More... | |
void | updateCounter () |
Timer settings or the offset has changed, re-evaluate trigger condition and raise interrupt if necessary. More... | |
void | counterLimitReached () |
Called when the upcounter reaches the programmed value. More... | |
virtual bool | scheduleEvents () |
Protected Member Functions inherited from Drainable | |
Drainable () | |
virtual | ~Drainable () |
void | signalDrainDone () const |
Signal that an object is drained. More... | |
Protected Attributes | |
Bitfield< 1 > | imask |
Bitfield< 2 > | istatus |
EndBitUnion(ArchTimerCtrl) const std SimObject & | _parent |
Name of this timer. More... | |
SystemCounter & | _systemCounter |
ArmInterruptPin *const | _interrupt |
ArchTimerCtrl | _control |
Value of the control register ({CNTP/CNTHP/CNTV}_CTL). More... | |
uint64_t | _counterLimit |
Programmed limit value for the upcounter ({CNTP/CNTHP/CNTV}_CVAL). More... | |
uint64_t | _offset |
Offset relative to the physical timer (CNTVOFF) More... | |
EventFunctionWrapper | _counterLimitReachedEvent |
Private Member Functions | |
ArchTimer (const ArchTimer &t) | |
Additional Inherited Members | |
Static Public Member Functions inherited from Serializable | |
static const std::string & | currentSection () |
Gets the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
Serializes all the SimObjects. More... | |
static void | unserializeGlobals (CheckpointIn &cp) |
Per-CPU architected timer.
Definition at line 168 of file generic_timer.hh.
ArchTimer::ArchTimer | ( | const std::string & | name, |
SimObject & | parent, | ||
SystemCounter & | sysctr, | ||
ArmInterruptPin * | interrupt | ||
) |
Definition at line 248 of file generic_timer.cc.
References counterLimitReached().
|
private |
|
protected |
Control register.
|
inline |
Returns the CompareValue view of the timer.
Definition at line 217 of file generic_timer.hh.
References _counterLimit.
Referenced by GenericTimer::readMiscReg(), GenericTimerFrame::timerRead(), and GenericTimerFrame::timerWrite().
|
inline |
Sets the control register.
Definition at line 227 of file generic_timer.hh.
References _control.
Referenced by GenericTimer::readMiscReg(), and GenericTimerFrame::timerRead().
|
protected |
Called when the upcounter reaches the programmed value.
Definition at line 261 of file generic_timer.cc.
References _control, _interrupt, DPRINTF, ArmInterruptPin::raise(), and scheduleEvents().
Referenced by ArchTimer(), and updateCounter().
|
overridevirtual |
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight.
Draining is mostly used before forking and creating a check point.
This function notifies an object that it needs to drain its state.
If the object does not need further simulation to drain internal buffers, it returns DrainState::Drained and automatically switches to the Drained state. If the object needs more simulation, it returns DrainState::Draining and automatically enters the Draining state. Other return values are invalid.
Implements Drainable.
Definition at line 384 of file generic_timer.cc.
References _counterLimitReachedEvent, _parent, EventManager::deschedule(), Drained, and Event::scheduled().
|
overridevirtual |
Resume execution after a successful drain.
Reimplemented from Drainable.
Definition at line 393 of file generic_timer.cc.
References updateCounter().
|
inline |
Returns the timer name.
Definition at line 214 of file generic_timer.hh.
|
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 356 of file generic_timer.cc.
References updateCounter().
|
inline |
Definition at line 230 of file generic_timer.hh.
References _offset.
Referenced by GenericTimerFrame::getVirtOffset(), GenericTimer::readMiscReg(), and GenericTimerFrame::timerRead().
|
inlineprotectedvirtual |
Reimplemented in ArchTimerKvm.
Definition at line 205 of file generic_timer.hh.
Referenced by counterLimitReached(), and updateCounter().
|
overridevirtual |
Serialize an object.
Output an object's state into the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Definition at line 362 of file generic_timer.cc.
References _control, _counterLimit, _offset, paramOut(), and SERIALIZE_SCALAR.
void ArchTimer::setCompareValue | ( | uint64_t | val | ) |
Sets the CompareValue view of the timer.
Definition at line 302 of file generic_timer.cc.
References _counterLimit, updateCounter(), and X86ISA::val.
Referenced by GenericTimer::setMiscReg(), setTimerValue(), and GenericTimerFrame::timerWrite().
void ArchTimer::setControl | ( | uint32_t | val | ) |
Definition at line 315 of file generic_timer.cc.
References _control, _interrupt, ArmInterruptPin::active(), ArmInterruptPin::clear(), DPRINTF, updateCounter(), and X86ISA::val.
Referenced by GenericTimer::setMiscReg(), and GenericTimerFrame::timerWrite().
void ArchTimer::setOffset | ( | uint64_t | val | ) |
Definition at line 343 of file generic_timer.cc.
References _offset, updateCounter(), and X86ISA::val.
Referenced by GenericTimer::setMiscReg(), and GenericTimerFrame::setVirtOffset().
void ArchTimer::setTimerValue | ( | uint32_t | val | ) |
Sets the TimerValue view of the timer.
Definition at line 309 of file generic_timer.cc.
References setCompareValue(), X86ISA::val, and value().
Referenced by GenericTimer::setMiscReg(), and GenericTimerFrame::timerWrite().
|
inline |
Returns the TimerValue view of the timer.
Definition at line 222 of file generic_timer.hh.
References _counterLimit, and value().
Referenced by GenericTimer::readMiscReg(), and GenericTimerFrame::timerRead().
|
overridevirtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Implements Serializable.
Definition at line 370 of file generic_timer.cc.
References _control, _offset, paramIn(), and UNSERIALIZE_OPT_SCALAR.
|
protected |
Timer settings or the offset has changed, re-evaluate trigger condition and raise interrupt if necessary.
Definition at line 279 of file generic_timer.cc.
References _control, _counterLimit, _counterLimitReachedEvent, _interrupt, _parent, ArmInterruptPin::active(), ArmInterruptPin::clear(), counterLimitReached(), EventManager::deschedule(), DPRINTF, EventManager::schedule(), Event::scheduled(), scheduleEvents(), value(), and whenValue().
Referenced by drainResume(), notify(), setCompareValue(), setControl(), and setOffset().
uint64_t ArchTimer::value | ( | ) | const |
Returns the value of the counter which this timer relies on.
Definition at line 350 of file generic_timer.cc.
References _offset, _systemCounter, and SystemCounter::value().
Referenced by GenericTimer::handleStream(), GenericTimer::readMiscReg(), GenericTimer::CoreTimers::schedNextEvent(), setTimerValue(), GenericTimerFrame::timerRead(), timerValue(), updateCounter(), and whenValue().
|
inline |
Definition at line 235 of file generic_timer.hh.
References _systemCounter, value(), and SystemCounter::whenValue().
Referenced by GenericTimer::handleStream(), GenericTimer::CoreTimers::schedNextEvent(), and updateCounter().
|
protected |
Value of the control register ({CNTP/CNTHP/CNTV}_CTL).
Definition at line 189 of file generic_timer.hh.
Referenced by control(), counterLimitReached(), serialize(), setControl(), unserialize(), and updateCounter().
|
protected |
Programmed limit value for the upcounter ({CNTP/CNTHP/CNTV}_CVAL).
Definition at line 191 of file generic_timer.hh.
Referenced by compareValue(), serialize(), setCompareValue(), timerValue(), and updateCounter().
|
protected |
Definition at line 203 of file generic_timer.hh.
Referenced by drain(), and updateCounter().
|
protected |
Definition at line 186 of file generic_timer.hh.
Referenced by counterLimitReached(), setControl(), and updateCounter().
|
protected |
Offset relative to the physical timer (CNTVOFF)
Definition at line 193 of file generic_timer.hh.
Referenced by offset(), serialize(), setOffset(), unserialize(), and value().
|
protected |
Name of this timer.
Pointer to parent class.
Definition at line 176 of file generic_timer.hh.
Referenced by drain(), and updateCounter().
|
protected |
Definition at line 184 of file generic_timer.hh.
Referenced by value(), and whenValue().
|
protected |
Definition at line 174 of file generic_timer.hh.
|
protected |
Definition at line 175 of file generic_timer.hh.