gem5
v20.1.0.0
|
Programmable Interval Timer (Intel 8254) More...
#include <intel_8254_timer.hh>
Classes | |
class | Counter |
Counter element for PIT. More... | |
Public Member Functions | |
virtual | ~Intel8254Timer () |
Intel8254Timer (EventManager *em, const std::string &name, Counter *counter0, Counter *counter1, Counter *counter2) | |
Intel8254Timer (EventManager *em, const std::string &name) | |
void | writeControl (const CtrlReg data) |
Write control word. More... | |
uint8_t | readCounter (unsigned int num) |
void | writeCounter (unsigned int num, const uint8_t data) |
bool | outputHigh (unsigned int num) |
void | serialize (const std::string &base, CheckpointOut &cp) const |
Serialize this object to the given output stream. More... | |
void | unserialize (const std::string &base, CheckpointIn &cp) |
Reconstruct the state of this object from a checkpoint. More... | |
void | startup () |
Start ticking. More... | |
Public Member Functions inherited from EventManager | |
EventQueue * | eventQueue () const |
void | schedule (Event &event, Tick when) |
void | deschedule (Event &event) |
void | reschedule (Event &event, Tick when, bool always=false) |
void | schedule (Event *event, Tick when) |
void | deschedule (Event *event) |
void | reschedule (Event *event, Tick when, bool always=false) |
void | wakeupEventQueue (Tick when=(Tick) -1) |
This function is not needed by the usual gem5 event loop but may be necessary in derived EventQueues which host gem5 on other schedulers. More... | |
void | setCurTick (Tick newVal) |
EventManager (EventManager &em) | |
Event manger manages events in the event queue. More... | |
EventManager (EventManager *em) | |
EventManager (EventQueue *eq) | |
Protected Types | |
enum | ReadWriteVal { LatchCommand, LsbOnly, MsbOnly, TwoPhase } |
enum | ModeVal { InitTc, OneShot, RateGen, SquareWave, SoftwareStrobe, HardwareStrobe } |
Protected Member Functions | |
BitUnion8 (CtrlReg) Bitfield< 7 | |
EndBitUnion (CtrlReg) enum SelectVal | |
const std::string & | name () const |
virtual void | counterInterrupt (unsigned int num) |
Protected Attributes | |
sel | |
Bitfield< 5, 4 > | rw |
Bitfield< 3, 1 > | mode |
Bitfield< 0 > | bcd |
std::string | _name |
Counter * | counter [3] |
PIT has three seperate counters. More... | |
Protected Attributes inherited from EventManager | |
EventQueue * | eventq |
A pointer to this object's event queue. More... | |
Programmable Interval Timer (Intel 8254)
Definition at line 43 of file intel_8254_timer.hh.
|
protected |
Enumerator | |
---|---|
InitTc | |
OneShot | |
RateGen | |
SquareWave | |
SoftwareStrobe | |
HardwareStrobe |
Definition at line 67 of file intel_8254_timer.hh.
|
protected |
Enumerator | |
---|---|
LatchCommand | |
LsbOnly | |
MsbOnly | |
TwoPhase |
Definition at line 60 of file intel_8254_timer.hh.
|
inlinevirtual |
Definition at line 208 of file intel_8254_timer.hh.
Intel8254Timer::Intel8254Timer | ( | EventManager * | em, |
const std::string & | name, | ||
Counter * | counter0, | ||
Counter * | counter1, | ||
Counter * | counter2 | ||
) |
Intel8254Timer::Intel8254Timer | ( | EventManager * | em, |
const std::string & | name | ||
) |
|
protected |
|
inlineprotectedvirtual |
Reimplemented in X86ISA::I8254::X86Intel8254Timer.
Definition at line 200 of file intel_8254_timer.hh.
References DPRINTF.
Referenced by Intel8254Timer::Counter::CounterEvent::process().
|
inlineprotected |
Definition at line 51 of file intel_8254_timer.hh.
|
inlineprotected |
Definition at line 194 of file intel_8254_timer.hh.
References _name.
|
inline |
Definition at line 234 of file intel_8254_timer.hh.
References counter, and Intel8254Timer::Counter::outputHigh().
Referenced by X86ISA::I8254::outputHigh().
|
inline |
Definition at line 220 of file intel_8254_timer.hh.
References counter, and Intel8254Timer::Counter::read().
Referenced by X86ISA::I8254::readCounter().
void Intel8254Timer::serialize | ( | const std::string & | base, |
CheckpointOut & | cp | ||
) | const |
Serialize this object to the given output stream.
base | The base name of the counter object. |
os | The stream to serialize to. |
Definition at line 71 of file intel_8254_timer.cc.
References X86ISA::base, counter, and Intel8254Timer::Counter::serialize().
Referenced by MaltaIO::serialize().
void Intel8254Timer::startup | ( | ) |
Start ticking.
Definition at line 89 of file intel_8254_timer.cc.
References counter, and Intel8254Timer::Counter::startup().
Referenced by MaltaIO::startup().
void Intel8254Timer::unserialize | ( | const std::string & | base, |
CheckpointIn & | cp | ||
) |
Reconstruct the state of this object from a checkpoint.
base | The base name of the counter object. |
cp | The checkpoint use. |
section | The section name of this object |
Definition at line 80 of file intel_8254_timer.cc.
References X86ISA::base, counter, and Intel8254Timer::Counter::unserialize().
Referenced by MaltaIO::unserialize().
void Intel8254Timer::writeControl | ( | const CtrlReg | data | ) |
Write control word.
Definition at line 54 of file intel_8254_timer.cc.
References counter, data, LatchCommand, Intel8254Timer::Counter::latchCount(), panic, sel, Intel8254Timer::Counter::setBCD(), Intel8254Timer::Counter::setMode(), and Intel8254Timer::Counter::setRW().
Referenced by X86ISA::I8254::writeControl().
|
inline |
Definition at line 227 of file intel_8254_timer.hh.
References counter, data, and Intel8254Timer::Counter::write().
Referenced by X86ISA::I8254::writeCounter().
|
protected |
Definition at line 193 of file intel_8254_timer.hh.
Referenced by name().
|
protected |
Definition at line 50 of file intel_8254_timer.hh.
|
protected |
PIT has three seperate counters.
Definition at line 197 of file intel_8254_timer.hh.
Referenced by Intel8254Timer::Counter::CounterEvent::CounterEvent(), outputHigh(), Intel8254Timer::Counter::CounterEvent::process(), readCounter(), serialize(), Intel8254Timer::Counter::CounterEvent::setTo(), startup(), unserialize(), writeControl(), and writeCounter().
|
protected |
Definition at line 49 of file intel_8254_timer.hh.
Referenced by Intel8254Timer::Counter::currentCount(), Intel8254Timer::Counter::serialize(), Intel8254Timer::Counter::setMode(), Intel8254Timer::Counter::unserialize(), and Intel8254Timer::Counter::write().
|
protected |
Definition at line 48 of file intel_8254_timer.hh.
|
protected |
Definition at line 47 of file intel_8254_timer.hh.
Referenced by writeControl().