gem5  v22.0.0.2
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
gem5::Intel8254Timer::Counter Class Reference

Counter element for PIT. More...

#include <intel_8254_timer.hh>

Classes

class  CounterEvent
 Event for counter interrupt. More...
 

Public Member Functions

 Counter (Intel8254Timer *p, const std::string &name, unsigned int num)
 
unsigned int index () const
 
void latchCount ()
 Latch the current count (if one is not already latched) More...
 
int currentCount ()
 Get the current count for this counter. More...
 
void setRW (int rw_val)
 Set the read/write mode. More...
 
void setMode (int mode_val)
 Set operational mode. More...
 
void setBCD (int bcd_val)
 Set count encoding. More...
 
uint8_t read ()
 Read a count byte. More...
 
void write (const uint8_t data)
 Write a count byte. More...
 
bool outputHigh ()
 Is the output high? More...
 
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...
 

Private Types

enum  { LSB, MSB }
 Set of values for read_byte and write_byte. More...
 

Private Member Functions

const std::string & name () const
 

Private Attributes

std::string _name
 
unsigned int num
 
CounterEvent event
 
bool running
 True after startup is called. More...
 
uint16_t initial_count
 Initial count value. More...
 
uint16_t latched_count
 Latched count. More...
 
uint16_t period
 Interrupt period. More...
 
Tick offset
 When to start ticking. More...
 
uint8_t mode
 Current mode of operation. More...
 
bool output_high
 Output goes high when the counter reaches zero. More...
 
bool latch_on
 State of the count latch. More...
 
uint8_t read_byte
 Determine which byte of a 16-bit count value to read/write. More...
 
uint8_t write_byte
 
Intel8254Timerparent
 Pointer to container. More...
 

Detailed Description

Counter element for PIT.

Definition at line 94 of file intel_8254_timer.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private

Set of values for read_byte and write_byte.

Enumerator
LSB 
MSB 

Definition at line 155 of file intel_8254_timer.hh.

Constructor & Destructor Documentation

◆ Counter()

gem5::Intel8254Timer::Counter::Counter ( Intel8254Timer p,
const std::string &  name,
unsigned int  num 
)

Definition at line 102 of file intel_8254_timer.cc.

References offset, and period.

Member Function Documentation

◆ currentCount()

int gem5::Intel8254Timer::Counter::currentCount ( )

Get the current count for this counter.

Definition at line 124 of file intel_8254_timer.cc.

References gem5::Intel8254Timer::mode, gem5::Intel8254Timer::RateGen, gem5::Intel8254Timer::SquareWave, and warn_once.

◆ index()

unsigned int gem5::Intel8254Timer::Counter::index ( ) const
inline

Definition at line 166 of file intel_8254_timer.hh.

References num.

◆ latchCount()

void gem5::Intel8254Timer::Counter::latchCount ( )

Latch the current count (if one is not already latched)

Definition at line 113 of file intel_8254_timer.cc.

◆ name()

const std::string& gem5::Intel8254Timer::Counter::name ( ) const
inlineprivate

Definition at line 124 of file intel_8254_timer.hh.

References _name.

◆ outputHigh()

bool gem5::Intel8254Timer::Counter::outputHigh ( )

Is the output high?

Definition at line 228 of file intel_8254_timer.cc.

◆ read()

uint8_t gem5::Intel8254Timer::Counter::read ( )

Read a count byte.

Definition at line 138 of file intel_8254_timer.cc.

References gem5::Intel8254Timer::count, and panic.

◆ serialize()

void gem5::Intel8254Timer::Counter::serialize ( const std::string &  base,
CheckpointOut cp 
) const

Serialize this object to the given output stream.

Parameters
baseThe base name of the counter object.
osThe stream to serialize to.

Definition at line 234 of file intel_8254_timer.cc.

References gem5::X86ISA::base, gem5::curTick(), gem5::MipsISA::event, gem5::Intel8254Timer::mode, and gem5::paramOut().

◆ setBCD()

void gem5::Intel8254Timer::Counter::setBCD ( int  bcd_val)

Set count encoding.

Definition at line 221 of file intel_8254_timer.cc.

References panic.

◆ setMode()

void gem5::Intel8254Timer::Counter::setMode ( int  mode_val)

◆ setRW()

void gem5::Intel8254Timer::Counter::setRW ( int  rw_val)

Set the read/write mode.

Definition at line 204 of file intel_8254_timer.cc.

References panic, and gem5::Intel8254Timer::TwoPhase.

◆ startup()

void gem5::Intel8254Timer::Counter::startup ( )

Start ticking.

Definition at line 271 of file intel_8254_timer.cc.

References gem5::curTick(), gem5::MipsISA::event, and gem5::ArmISA::offset.

◆ unserialize()

void gem5::Intel8254Timer::Counter::unserialize ( const std::string &  base,
CheckpointIn cp 
)

Reconstruct the state of this object from a checkpoint.

Parameters
baseThe base name of the counter object.
cpThe checkpoint use.
sectionThe section name of this object

Definition at line 253 of file intel_8254_timer.cc.

References gem5::X86ISA::base, gem5::MipsISA::event, gem5::Intel8254Timer::mode, gem5::ArmISA::offset, and gem5::paramIn().

◆ write()

void gem5::Intel8254Timer::Counter::write ( const uint8_t  data)

Member Data Documentation

◆ _name

std::string gem5::Intel8254Timer::Counter::_name
private

Definition at line 123 of file intel_8254_timer.hh.

Referenced by name().

◆ event

CounterEvent gem5::Intel8254Timer::Counter::event
private

Definition at line 128 of file intel_8254_timer.hh.

◆ initial_count

uint16_t gem5::Intel8254Timer::Counter::initial_count
private

Initial count value.

Definition at line 134 of file intel_8254_timer.hh.

◆ latch_on

bool gem5::Intel8254Timer::Counter::latch_on
private

State of the count latch.

Definition at line 152 of file intel_8254_timer.hh.

◆ latched_count

uint16_t gem5::Intel8254Timer::Counter::latched_count
private

Latched count.

Definition at line 137 of file intel_8254_timer.hh.

◆ mode

uint8_t gem5::Intel8254Timer::Counter::mode
private

Current mode of operation.

Definition at line 146 of file intel_8254_timer.hh.

◆ num

unsigned int gem5::Intel8254Timer::Counter::num
private

Definition at line 126 of file intel_8254_timer.hh.

Referenced by index().

◆ offset

Tick gem5::Intel8254Timer::Counter::offset
private

When to start ticking.

Definition at line 143 of file intel_8254_timer.hh.

Referenced by Counter().

◆ output_high

bool gem5::Intel8254Timer::Counter::output_high
private

Output goes high when the counter reaches zero.

Definition at line 149 of file intel_8254_timer.hh.

◆ parent

Intel8254Timer* gem5::Intel8254Timer::Counter::parent
private

Pointer to container.

Definition at line 161 of file intel_8254_timer.hh.

◆ period

uint16_t gem5::Intel8254Timer::Counter::period
private

Interrupt period.

Definition at line 140 of file intel_8254_timer.hh.

Referenced by Counter().

◆ read_byte

uint8_t gem5::Intel8254Timer::Counter::read_byte
private

Determine which byte of a 16-bit count value to read/write.

Definition at line 158 of file intel_8254_timer.hh.

◆ running

bool gem5::Intel8254Timer::Counter::running
private

True after startup is called.

Definition at line 131 of file intel_8254_timer.hh.

◆ write_byte

uint8_t gem5::Intel8254Timer::Counter::write_byte
private

Definition at line 158 of file intel_8254_timer.hh.


The documentation for this class was generated from the following files:

Generated on Thu Jul 28 2022 13:33:05 for gem5 by doxygen 1.8.17