gem5
v21.1.0.2
|
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interface. More...
#include <simple_thread.hh>
Public Types | |
typedef ThreadContext::Status | Status |
![]() | |
typedef ThreadContext::Status | Status |
![]() | |
enum | Status { Active, Suspended, Halting, Halted } |
Public Member Functions | |
std::string | name () const |
SimpleThread (BaseCPU *_cpu, int _thread_num, System *_system, BaseMMU *_mmu, BaseISA *_isa) | |
SimpleThread (BaseCPU *_cpu, int _thread_num, System *_system, Process *_process, BaseMMU *_mmu, BaseISA *_isa) | |
virtual | ~SimpleThread () |
void | takeOverFrom (ThreadContext *oldContext) override |
void | copyState (ThreadContext *oldContext) |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
ThreadContext * | getTC () |
Returns the pointer to this SimpleThread's ThreadContext. More... | |
void | demapPage (Addr vaddr, uint64_t asn) |
bool | schedule (PCEvent *e) override |
bool | remove (PCEvent *e) override |
void | scheduleInstCountEvent (Event *event, Tick count) override |
void | descheduleInstCountEvent (Event *event) override |
Tick | getCurrentInstCount () override |
BaseCPU * | getCpuPtr () override |
int | cpuId () const override |
uint32_t | socketId () const override |
int | threadId () const override |
void | setThreadId (int id) override |
ContextID | contextId () const override |
void | setContextId (ContextID id) override |
BaseMMU * | getMMUPtr () override |
CheckerCPU * | getCheckerCpuPtr () override |
BaseISA * | getIsaPtr () override |
TheISA::Decoder * | getDecoderPtr () override |
System * | getSystemPtr () override |
PortProxy & | getVirtProxy () override |
void | initMemProxies (ThreadContext *tc) override |
Initialise the physical and virtual port proxies and tie them to the data port of the CPU. More... | |
Process * | getProcessPtr () override |
void | setProcessPtr (Process *p) override |
Status | status () const override |
void | setStatus (Status newStatus) override |
void | activate () override |
Set the status to Active. More... | |
void | suspend () override |
Set the status to Suspended. More... | |
void | halt () override |
Set the status to Halted. More... | |
Tick | readLastActivate () override |
Tick | readLastSuspend () override |
void | copyArchRegs (ThreadContext *tc) override |
void | clearArchRegs () override |
RegVal | readIntReg (RegIndex reg_idx) const override |
RegVal | readFloatReg (RegIndex reg_idx) const override |
const TheISA::VecRegContainer & | readVecReg (const RegId ®) const override |
TheISA::VecRegContainer & | getWritableVecReg (const RegId ®) override |
const TheISA::VecElem & | readVecElem (const RegId ®) const override |
const TheISA::VecPredRegContainer & | readVecPredReg (const RegId ®) const override |
TheISA::VecPredRegContainer & | getWritableVecPredReg (const RegId ®) override |
RegVal | readCCReg (RegIndex reg_idx) const override |
void | setIntReg (RegIndex reg_idx, RegVal val) override |
void | setFloatReg (RegIndex reg_idx, RegVal val) override |
void | setVecReg (const RegId ®, const TheISA::VecRegContainer &val) override |
void | setVecElem (const RegId ®, const TheISA::VecElem &val) override |
void | setVecPredReg (const RegId ®, const TheISA::VecPredRegContainer &val) override |
void | setCCReg (RegIndex reg_idx, RegVal val) override |
TheISA::PCState | pcState () const override |
void | pcState (const TheISA::PCState &val) override |
void | pcStateNoRecord (const TheISA::PCState &val) override |
Addr | instAddr () const override |
Addr | nextInstAddr () const override |
MicroPC | microPC () const override |
bool | readPredicate () const |
void | setPredicate (bool val) |
RegVal | readMiscRegNoEffect (RegIndex misc_reg) const override |
RegVal | readMiscReg (RegIndex misc_reg) override |
void | setMiscRegNoEffect (RegIndex misc_reg, RegVal val) override |
void | setMiscReg (RegIndex misc_reg, RegVal val) override |
RegId | flattenRegId (const RegId ®Id) const override |
unsigned | readStCondFailures () const override |
bool | readMemAccPredicate () |
void | setMemAccPredicate (bool val) |
void | setStCondFailures (unsigned sc_failures) override |
RegVal | readIntRegFlat (RegIndex idx) const override |
Flat register interfaces. More... | |
void | setIntRegFlat (RegIndex idx, RegVal val) override |
RegVal | readFloatRegFlat (RegIndex idx) const override |
void | setFloatRegFlat (RegIndex idx, RegVal val) override |
const TheISA::VecRegContainer & | readVecRegFlat (RegIndex reg) const override |
TheISA::VecRegContainer & | getWritableVecRegFlat (RegIndex reg) override |
void | setVecRegFlat (RegIndex reg, const TheISA::VecRegContainer &val) override |
const TheISA::VecElem & | readVecElemFlat (RegIndex reg, const ElemIndex &elemIndex) const override |
void | setVecElemFlat (RegIndex reg, const ElemIndex &elemIndex, const TheISA::VecElem &val) override |
const TheISA::VecPredRegContainer & | readVecPredRegFlat (RegIndex reg) const override |
TheISA::VecPredRegContainer & | getWritableVecPredRegFlat (RegIndex reg) override |
void | setVecPredRegFlat (RegIndex reg, const TheISA::VecPredRegContainer &val) override |
RegVal | readCCRegFlat (RegIndex idx) const override |
void | setCCRegFlat (RegIndex idx, RegVal val) override |
void | htmAbortTransaction (uint64_t htm_uid, HtmFailureFaultCause cause) override |
BaseHTMCheckpointPtr & | getHtmCheckpointPtr () override |
void | setHtmCheckpointPtr (BaseHTMCheckpointPtr new_cpt) override |
![]() | |
ThreadState (BaseCPU *cpu, ThreadID _tid, Process *_process) | |
virtual | ~ThreadState () |
void | serialize (CheckpointOut &cp) const override |
Serialize an object. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
int | cpuId () const |
uint32_t | socketId () const |
ContextID | contextId () const |
void | setContextId (ContextID id) |
void | setThreadId (ThreadID id) |
ThreadID | threadId () const |
Tick | readLastActivate () const |
Tick | readLastSuspend () const |
void | initMemProxies (ThreadContext *tc) |
Initialise the physical and virtual port proxies and tie them to the data port of the CPU. More... | |
PortProxy & | getVirtProxy () |
Process * | getProcessPtr () |
void | setProcessPtr (Process *p) |
Status | status () const |
Returns the status of this thread. More... | |
void | setStatus (Status new_status) |
Sets the status of this thread. 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) |
![]() | |
bool | getUseForClone () |
void | setUseForClone (bool new_val) |
virtual | ~ThreadContext () |
virtual void | sendFunctional (PacketPtr pkt) |
void | quiesce () |
Quiesce thread context. More... | |
void | quiesceTick (Tick resume) |
Quiesce, suspend, and schedule activate at resume. More... | |
virtual void | regStats (const std::string &name) |
void | setNPC (Addr val) |
virtual int | exit () |
Public Attributes | |
PCEventQueue | pcEventQueue |
EventQueue | comInstEventQueue |
An instruction-based event queue. More... | |
System * | system |
BaseMMU * | mmu |
TheISA::Decoder | decoder |
int64_t | htmTransactionStarts |
int64_t | htmTransactionStops |
![]() | |
Counter | numInst |
Number of instructions committed. More... | |
Counter | numOp |
Number of ops (including micro ops) committed. More... | |
gem5::ThreadState::ThreadStateStats | threadStats |
Counter | numLoad |
Number of simulated loads, used for tracking events based on the number of loads committed. More... | |
Counter | startNumLoad |
The number of simulated loads committed prior to this run. More... | |
Tick | lastActivate |
Last time activate was called on this thread. More... | |
Tick | lastSuspend |
Last time suspend was called on this thread. More... | |
unsigned | storeCondFailures |
![]() | |
int | intResult = DefaultIntResult |
double | floatResult = DefaultFloatResult |
int | intOffset = 0 |
Protected Attributes | |
std::vector< RegVal > | floatRegs |
std::vector< RegVal > | intRegs |
std::vector< TheISA::VecRegContainer > | vecRegs |
std::vector< TheISA::VecPredRegContainer > | vecPredRegs |
std::vector< RegVal > | ccRegs |
TheISA::ISA *const | isa |
TheISA::PCState | _pcState |
std::unique_ptr< BaseHTMCheckpoint > | _htmCheckpoint |
bool | predicate |
Did this instruction execute or is it predicated false. More... | |
bool | memAccPredicate |
True if the memory access should be skipped for this instruction. More... | |
![]() | |
ThreadContext::Status | _status |
BaseCPU * | baseCpu |
ContextID | _contextId |
ThreadID | _threadId |
Process * | process |
PortProxy * | virtProxy |
A translating port proxy, outgoing only, for functional accesse to virtual addresses. More... | |
![]() | |
bool | useForClone = false |
Additional Inherited Members | |
![]() | |
static const std::string & | currentSection () |
Gets the fully-qualified name of the active section. More... | |
static void | generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream) |
Generate a checkpoint file so that the serialization can be routed to it. More... | |
![]() | |
static void | compare (ThreadContext *one, ThreadContext *two) |
function to compare two thread contexts (for debugging) More... | |
![]() | |
static const int | ints [] |
static const double | floats [] |
static const int | DefaultIntResult = 0 |
static const double | DefaultFloatResult = 0.0 |
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interface.
It implements the ThreadContext interface and adds to the ThreadState object by adding all the objects needed for simple functional execution, including a simple architectural register file, and pointers to the ITB and DTB in full system mode. For CPU models that do not need more advanced ways to hold state (i.e. a separate physical register file, or separate fetch and commit PC's), this SimpleThread class provides all the necessary state for full architecture-level functional simulation. See the AtomicSimpleCPU or TimingSimpleCPU for examples.
Definition at line 94 of file simple_thread.hh.
Definition at line 97 of file simple_thread.hh.
gem5::SimpleThread::SimpleThread | ( | BaseCPU * | _cpu, |
int | _thread_num, | ||
System * | _system, | ||
BaseMMU * | _mmu, | ||
BaseISA * | _isa | ||
) |
Definition at line 88 of file simple_thread.cc.
gem5::SimpleThread::SimpleThread | ( | BaseCPU * | _cpu, |
int | _thread_num, | ||
System * | _system, | ||
Process * | _process, | ||
BaseMMU * | _mmu, | ||
BaseISA * | _isa | ||
) |
Definition at line 68 of file simple_thread.cc.
References gem5::CCRegClass, ccRegs, clearArchRegs(), gem5::FloatRegClass, floatRegs, gem5::IntRegClass, intRegs, isa, gem5::VecPredRegClass, vecPredRegs, gem5::VecRegClass, and vecRegs.
|
inlinevirtual |
Definition at line 151 of file simple_thread.hh.
|
overridevirtual |
Set the status to Active.
Implements gem5::ThreadContext.
Definition at line 131 of file simple_thread.cc.
References gem5::ThreadState::_status, gem5::ThreadState::_threadId, gem5::BaseCPU::activateContext(), gem5::ThreadContext::Active, gem5::ThreadState::baseCpu, gem5::curTick(), gem5::ThreadState::lastActivate, and status().
Referenced by gem5::BaseKvmCPU::wakeup().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 257 of file simple_thread.hh.
References _pcState, ccRegs, gem5::MipsISA::fill, floatRegs, intRegs, isa, vecPredRegs, and vecRegs.
Referenced by gem5::CheckerThreadContext< TC >::clearArchRegs(), and SimpleThread().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 206 of file simple_thread.hh.
References gem5::ThreadState::contextId().
Referenced by gem5::minor::ExecContext::contextId(), gem5::TimingSimpleCPU::fetch(), gem5::TimingSimpleCPU::htmSendAbortSignal(), gem5::TimingSimpleCPU::initiateHtmCmd(), gem5::TimingSimpleCPU::initiateMemAMO(), gem5::TimingSimpleCPU::initiateMemRead(), and gem5::TimingSimpleCPU::writeMem().
|
overridevirtual |
Implements gem5::ThreadContext.
Definition at line 165 of file simple_thread.cc.
References gem5::BaseISA::copyRegsFrom(), and getIsaPtr().
Referenced by gem5::CheckerThreadContext< TC >::copyArchRegs(), and copyState().
void gem5::SimpleThread::copyState | ( | ThreadContext * | oldContext | ) |
Definition at line 105 of file simple_thread.cc.
References gem5::ThreadState::_contextId, gem5::ThreadState::_status, gem5::ThreadState::_threadId, gem5::ThreadContext::contextId(), copyArchRegs(), gem5::ThreadContext::status(), and gem5::ThreadContext::threadId().
Referenced by gem5::CheckerThreadContext< TC >::takeOverFrom().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 202 of file simple_thread.hh.
References gem5::ThreadState::cpuId().
|
inline |
Definition at line 172 of file simple_thread.hh.
References gem5::BaseMMU::demapPage(), mmu, and gem5::MipsISA::vaddr.
Referenced by gem5::SimpleExecContext::demapPage().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 190 of file simple_thread.hh.
References comInstEventQueue, gem5::EventQueue::deschedule(), and gem5::MipsISA::event.
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 211 of file simple_thread.hh.
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 200 of file simple_thread.hh.
References gem5::ThreadState::baseCpu.
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 195 of file simple_thread.hh.
References comInstEventQueue, and gem5::EventQueue::getCurTick().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 215 of file simple_thread.hh.
References decoder.
|
overridevirtual |
Implements gem5::ThreadContext.
Definition at line 185 of file simple_thread.cc.
References _htmCheckpoint.
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 213 of file simple_thread.hh.
References isa.
Referenced by copyArchRegs().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 209 of file simple_thread.hh.
References mmu.
Referenced by gem5::minor::ExecContext::demapPage().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 227 of file simple_thread.hh.
References gem5::ThreadState::getProcessPtr().
|
inlineoverridevirtual |
|
inline |
Returns the pointer to this SimpleThread's ThreadContext.
Used when a ThreadContext must be passed to objects outside of the CPU.
Definition at line 169 of file simple_thread.hh.
Referenced by gem5::AtomicSimpleCPU::amoMem(), gem5::BaseSimpleCPU::BaseSimpleCPU(), gem5::BaseSimpleCPU::checkForInterrupts(), gem5::BaseKvmCPU::doMMIOAccess(), gem5::TimingSimpleCPU::fetch(), gem5::TimingSimpleCPU::handleReadPacket(), gem5::TimingSimpleCPU::handleWritePacket(), gem5::TimingSimpleCPU::initiateMemAMO(), gem5::TimingSimpleCPU::initiateMemRead(), gem5::MinorCPU::MinorCPU(), gem5::BaseSimpleCPU::preExecute(), gem5::AtomicSimpleCPU::readMem(), gem5::CheckerCPU::setSystem(), gem5::minor::ExecContext::tcBase(), gem5::SimpleExecContext::tcBase(), gem5::AtomicSimpleCPU::tick(), gem5::AtomicSimpleCPU::writeMem(), and gem5::TimingSimpleCPU::writeMem().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 219 of file simple_thread.hh.
References gem5::ThreadState::getVirtProxy().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 342 of file simple_thread.hh.
References DPRINTF, getWritableVecPredRegFlat(), isa, gem5::X86ISA::reg, and vecPredRegs.
Referenced by gem5::minor::ExecContext::getWritableVecPredRegOperand(), gem5::CheckerCPU::getWritableVecPredRegOperand(), and gem5::SimpleExecContext::getWritableVecPredRegOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 551 of file simple_thread.hh.
References gem5::X86ISA::reg, and vecPredRegs.
Referenced by getWritableVecPredReg().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 307 of file simple_thread.hh.
References DPRINTF, getWritableVecRegFlat(), isa, gem5::X86ISA::reg, and vecRegs.
Referenced by gem5::minor::ExecContext::getWritableVecRegOperand(), gem5::CheckerCPU::getWritableVecRegOperand(), and gem5::SimpleExecContext::getWritableVecRegOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 520 of file simple_thread.hh.
References gem5::X86ISA::reg, and vecRegs.
Referenced by getWritableVecReg().
|
overridevirtual |
Set the status to Halted.
Implements gem5::ThreadContext.
Definition at line 155 of file simple_thread.cc.
References gem5::ThreadState::_status, gem5::ThreadState::_threadId, gem5::ThreadState::baseCpu, gem5::BaseCPU::haltContext(), gem5::ThreadContext::Halted, and status().
|
overridevirtual |
Implements gem5::ThreadContext.
Definition at line 172 of file simple_thread.cc.
References gem5::ThreadState::baseCpu, gem5::BaseSimpleCPU::htmSendAbortSignal(), htmTransactionStarts, and htmTransactionStops.
|
inlineoverridevirtual |
Initialise the physical and virtual port proxies and tie them to the data port of the CPU.
tc ThreadContext for the virtual-to-physical translation
Implements gem5::ThreadContext.
Definition at line 222 of file simple_thread.hh.
References gem5::ThreadState::initMemProxies().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 439 of file simple_thread.hh.
References _pcState.
Referenced by gem5::TimingSimpleCPU::htmSendAbortSignal(), gem5::TimingSimpleCPU::initiateHtmCmd(), gem5::TimingSimpleCPU::initiateMemAMO(), gem5::TimingSimpleCPU::initiateMemRead(), gem5::CheckerCPU::instAddr(), gem5::BaseSimpleCPU::setupFetchRequest(), and gem5::TimingSimpleCPU::writeMem().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 441 of file simple_thread.hh.
References _pcState.
Referenced by gem5::AtomicSimpleCPU::isCpuDrained(), gem5::TimingSimpleCPU::isCpuDrained(), and gem5::CheckerCPU::microPC().
|
inline |
Definition at line 120 of file simple_thread.hh.
References gem5::ThreadState::baseCpu, gem5::csprintf(), gem5::Named::name(), and threadId().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 440 of file simple_thread.hh.
References _pcState.
Referenced by gem5::CheckerCPU::nextInstAddr().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 430 of file simple_thread.hh.
References _pcState.
Referenced by gem5::BaseSimpleCPU::advancePC(), gem5::AtomicSimpleCPU::amoMem(), gem5::minor::LSQ::LSQRequest::completeDisabledMemAccess(), gem5::CheckerCPU::dumpAndExit(), gem5::TimingSimpleCPU::fetch(), gem5::CheckerCPU::genMemFragmentRequest(), gem5::minor::ExecContext::pcState(), gem5::CheckerThreadContext< TC >::pcState(), gem5::CheckerCPU::pcState(), gem5::SimpleExecContext::pcState(), gem5::BaseSimpleCPU::preExecute(), gem5::SimPoint::profile(), gem5::AtomicSimpleCPU::tick(), gem5::minor::LSQ::tryToSendToTransfers(), and gem5::minor::LSQ::LSQRequest::tryToSuppressFault().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 431 of file simple_thread.hh.
References _pcState, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 434 of file simple_thread.hh.
References _pcState, and gem5::X86ISA::val.
Implements gem5::ThreadContext.
Definition at line 355 of file simple_thread.hh.
References ccRegs, DPRINTF, isa, and readCCRegFlat().
Referenced by gem5::CheckerCPU::readCCRegOperand(), gem5::minor::ExecContext::readCCRegOperand(), and gem5::SimpleExecContext::readCCRegOperand().
Implements gem5::ThreadContext.
Definition at line 563 of file simple_thread.hh.
References ccRegs.
Referenced by readCCReg().
Implements gem5::ThreadContext.
Definition at line 285 of file simple_thread.hh.
References DPRINTF, floatRegs, isa, and readFloatRegFlat().
Referenced by gem5::minor::ExecContext::readFloatRegOperandBits(), gem5::CheckerCPU::readFloatRegOperandBits(), and gem5::SimpleExecContext::readFloatRegOperandBits().
Implements gem5::ThreadContext.
Definition at line 503 of file simple_thread.hh.
References floatRegs.
Referenced by readFloatReg().
Implements gem5::ThreadContext.
Definition at line 274 of file simple_thread.hh.
References DPRINTF, intRegs, isa, and readIntRegFlat().
Referenced by gem5::minor::ExecContext::readIntRegOperand(), gem5::CheckerCPU::readIntRegOperand(), and gem5::SimpleExecContext::readIntRegOperand().
Flat register interfaces.
Some architectures have different registers visible in different modes. Such architectures "flatten" a register (see flattenRegId()) to map it into the gem5 register file. This interface provides a flat interface to the underlying register file, which allows for example serialization code to access all registers.
Implements gem5::ThreadContext.
Definition at line 495 of file simple_thread.hh.
References intRegs.
Referenced by readIntReg().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 244 of file simple_thread.hh.
References gem5::ThreadState::readLastActivate().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 249 of file simple_thread.hh.
References gem5::ThreadState::readLastSuspend().
|
inline |
Definition at line 478 of file simple_thread.hh.
References memAccPredicate.
Referenced by gem5::minor::ExecContext::readMemAccPredicate(), gem5::CheckerCPU::readMemAccPredicate(), and gem5::SimpleExecContext::readMemAccPredicate().
Implements gem5::ThreadContext.
Definition at line 452 of file simple_thread.hh.
References isa.
Referenced by gem5::minor::ExecContext::readMiscReg(), gem5::CheckerCPU::readMiscReg(), gem5::SimpleExecContext::readMiscReg(), gem5::minor::ExecContext::readMiscRegOperand(), gem5::SimpleExecContext::readMiscRegOperand(), and gem5::CheckerCPU::readMiscRegOperand().
Implements gem5::ThreadContext.
Definition at line 446 of file simple_thread.hh.
References isa.
Referenced by gem5::minor::ExecContext::readMiscRegNoEffect(), and gem5::CheckerCPU::readMiscRegNoEffect().
|
inline |
Definition at line 442 of file simple_thread.hh.
References predicate.
Referenced by gem5::minor::ExecContext::readPredicate(), gem5::CheckerCPU::readPredicate(), and gem5::SimpleExecContext::readPredicate().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 475 of file simple_thread.hh.
References gem5::ThreadState::storeCondFailures.
Referenced by gem5::CheckerCPU::readStCondFailures(), and gem5::SimpleExecContext::readStCondFailures().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 318 of file simple_thread.hh.
References DPRINTF, isa, readVecElemFlat(), gem5::X86ISA::reg, and vecRegs.
Referenced by gem5::minor::ExecContext::readVecElemOperand(), gem5::CheckerCPU::readVecElemOperand(), and gem5::SimpleExecContext::readVecElemOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 532 of file simple_thread.hh.
References gem5::X86ISA::reg, and vecRegs.
Referenced by readVecElem().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 330 of file simple_thread.hh.
References DPRINTF, isa, readVecPredRegFlat(), gem5::X86ISA::reg, and vecPredRegs.
Referenced by gem5::minor::ExecContext::readVecPredRegOperand(), gem5::CheckerCPU::readVecPredRegOperand(), and gem5::SimpleExecContext::readVecPredRegOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 545 of file simple_thread.hh.
References gem5::X86ISA::reg, and vecPredRegs.
Referenced by readVecPredReg().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 296 of file simple_thread.hh.
References DPRINTF, isa, readVecRegFlat(), gem5::X86ISA::reg, and vecRegs.
Referenced by gem5::minor::ExecContext::readVecRegOperand(), gem5::CheckerCPU::readVecRegOperand(), and gem5::SimpleExecContext::readVecRegOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 514 of file simple_thread.hh.
References gem5::X86ISA::reg, and vecRegs.
Referenced by readVecReg().
|
inlineoverridevirtual |
Implements gem5::PCEventScope.
Definition at line 182 of file simple_thread.hh.
References gem5::ArmISA::e, pcEventQueue, and gem5::PCEventQueue::remove().
Referenced by gem5::CheckerThreadContext< TC >::remove().
|
inlineoverridevirtual |
Implements gem5::PCEventScope.
Definition at line 181 of file simple_thread.hh.
References gem5::ArmISA::e, pcEventQueue, and gem5::PCEventQueue::schedule().
Referenced by gem5::CheckerThreadContext< TC >::schedule().
Implements gem5::ThreadContext.
Definition at line 185 of file simple_thread.hh.
References comInstEventQueue, gem5::X86ISA::count, gem5::MipsISA::event, and gem5::EventQueue::schedule().
|
overridevirtual |
Serialize an object.
Output an object's state into the current checkpoint section.
cp | Checkpoint state |
Implements gem5::Serializable.
Definition at line 116 of file simple_thread.cc.
References gem5::ThreadState::serialize(), and gem5::serialize().
Referenced by gem5::BaseKvmCPU::serializeThread().
Implements gem5::ThreadContext.
Definition at line 421 of file simple_thread.hh.
References ccRegs, DPRINTF, isa, setCCRegFlat(), and gem5::X86ISA::val.
Referenced by gem5::CheckerThreadContext< TC >::setCCReg(), gem5::CheckerCPU::setCCRegOperand(), gem5::minor::ExecContext::setCCRegOperand(), and gem5::SimpleExecContext::setCCRegOperand().
Implements gem5::ThreadContext.
Definition at line 564 of file simple_thread.hh.
References ccRegs, and gem5::X86ISA::val.
Referenced by setCCReg().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 207 of file simple_thread.hh.
References gem5::ThreadState::setContextId().
Referenced by gem5::CheckerThreadContext< TC >::setContextId().
Implements gem5::ThreadContext.
Definition at line 377 of file simple_thread.hh.
References DPRINTF, floatRegs, isa, setFloatRegFlat(), and gem5::X86ISA::val.
Referenced by gem5::CheckerThreadContext< TC >::setFloatReg(), gem5::minor::ExecContext::setFloatRegOperandBits(), gem5::CheckerCPU::setFloatRegOperandBits(), and gem5::SimpleExecContext::setFloatRegOperandBits().
Implements gem5::ThreadContext.
Definition at line 508 of file simple_thread.hh.
References floatRegs, and gem5::X86ISA::val.
Referenced by setFloatReg().
|
overridevirtual |
Implements gem5::ThreadContext.
Definition at line 191 of file simple_thread.cc.
References _htmCheckpoint.
Implements gem5::ThreadContext.
Definition at line 367 of file simple_thread.hh.
References DPRINTF, intRegs, isa, setIntRegFlat(), and gem5::X86ISA::val.
Referenced by gem5::minor::ExecContext::ExecContext(), gem5::BaseSimpleCPU::preExecute(), gem5::CheckerThreadContext< TC >::setIntReg(), gem5::minor::ExecContext::setIntRegOperand(), gem5::CheckerCPU::setIntRegOperand(), and gem5::SimpleExecContext::setIntRegOperand().
Implements gem5::ThreadContext.
Definition at line 497 of file simple_thread.hh.
References intRegs, and gem5::X86ISA::val.
Referenced by setIntReg().
|
inline |
Definition at line 484 of file simple_thread.hh.
References memAccPredicate, and gem5::X86ISA::val.
Referenced by gem5::minor::ExecContext::setMemAccPredicate(), gem5::CheckerCPU::setMemAccPredicate(), and gem5::SimpleExecContext::setMemAccPredicate().
Implements gem5::ThreadContext.
Definition at line 464 of file simple_thread.hh.
References isa, and gem5::X86ISA::val.
Referenced by gem5::minor::ExecContext::setMiscReg(), gem5::CheckerThreadContext< TC >::setMiscReg(), gem5::CheckerCPU::setMiscReg(), gem5::SimpleExecContext::setMiscReg(), gem5::minor::ExecContext::setMiscRegOperand(), and gem5::SimpleExecContext::setMiscRegOperand().
Implements gem5::ThreadContext.
Definition at line 458 of file simple_thread.hh.
References isa, and gem5::X86ISA::val.
Referenced by gem5::CheckerThreadContext< TC >::setMiscRegNoEffect(), and gem5::CheckerCPU::setMiscRegNoEffect().
|
inline |
Definition at line 443 of file simple_thread.hh.
References predicate, and gem5::X86ISA::val.
Referenced by gem5::minor::ExecContext::setPredicate(), gem5::CheckerCPU::setPredicate(), and gem5::SimpleExecContext::setPredicate().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 228 of file simple_thread.hh.
References gem5::MipsISA::p, and gem5::ThreadState::setProcessPtr().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 232 of file simple_thread.hh.
References gem5::ThreadState::_status.
Referenced by gem5::MinorCPU::MinorCPU(), and gem5::CheckerThreadContext< TC >::setStatus().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 490 of file simple_thread.hh.
References gem5::ThreadState::storeCondFailures.
Referenced by gem5::SimpleExecContext::setStCondFailures().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 205 of file simple_thread.hh.
References gem5::ThreadState::setThreadId().
Referenced by gem5::CheckerThreadContext< TC >::setThreadId().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 400 of file simple_thread.hh.
References DPRINTF, isa, gem5::X86ISA::reg, setVecElemFlat(), gem5::X86ISA::val, and vecRegs.
Referenced by gem5::CheckerThreadContext< TC >::setVecElem(), gem5::minor::ExecContext::setVecElemOperand(), gem5::CheckerCPU::setVecElemOperand(), and gem5::SimpleExecContext::setVecElemOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 538 of file simple_thread.hh.
References gem5::X86ISA::reg, gem5::X86ISA::val, and vecRegs.
Referenced by setVecElem().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 410 of file simple_thread.hh.
References DPRINTF, isa, gem5::X86ISA::reg, setVecPredRegFlat(), gem5::X86ISA::val, and vecPredRegs.
Referenced by gem5::CheckerThreadContext< TC >::setVecPredReg(), gem5::minor::ExecContext::setVecPredRegOperand(), gem5::CheckerCPU::setVecPredRegOperand(), and gem5::SimpleExecContext::setVecPredRegOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 557 of file simple_thread.hh.
References gem5::X86ISA::reg, gem5::X86ISA::val, and vecPredRegs.
Referenced by setVecPredReg().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 390 of file simple_thread.hh.
References DPRINTF, isa, gem5::X86ISA::reg, setVecRegFlat(), gem5::X86ISA::val, and vecRegs.
Referenced by gem5::CheckerThreadContext< TC >::setVecReg(), gem5::minor::ExecContext::setVecRegOperand(), gem5::CheckerCPU::setVecRegOperand(), and gem5::SimpleExecContext::setVecRegOperand().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 526 of file simple_thread.hh.
References gem5::X86ISA::reg, gem5::X86ISA::val, and vecRegs.
Referenced by setVecReg().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 203 of file simple_thread.hh.
References gem5::ThreadState::socketId().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 230 of file simple_thread.hh.
References gem5::ThreadState::_status.
Referenced by activate(), halt(), suspend(), and gem5::BaseKvmCPU::wakeup().
|
overridevirtual |
Set the status to Suspended.
Implements gem5::ThreadContext.
Definition at line 142 of file simple_thread.cc.
References gem5::ThreadState::_status, gem5::ThreadState::_threadId, gem5::ThreadState::baseCpu, gem5::curTick(), gem5::ThreadState::lastActivate, gem5::ThreadState::lastSuspend, status(), gem5::BaseCPU::suspendContext(), and gem5::ThreadContext::Suspended.
Referenced by gem5::X86KvmCPU::deliverInterrupts(), and gem5::BaseKvmCPU::handleKvmExit().
|
overridevirtual |
Implements gem5::ThreadContext.
Definition at line 94 of file simple_thread.cc.
References decoder, gem5::ThreadContext::getDecoderPtr(), isa, gem5::ThreadState::storeCondFailures, and gem5::takeOverFrom().
|
inlineoverridevirtual |
Implements gem5::ThreadContext.
Definition at line 204 of file simple_thread.hh.
References gem5::ThreadState::threadId().
Referenced by gem5::SimpleExecContext::armMonitor(), gem5::SimpleExecContext::getAddrMonitor(), gem5::SimpleExecContext::mwait(), gem5::SimpleExecContext::mwaitAtomic(), and name().
|
overridevirtual |
Unserialize an object.
Read an object's state from the current checkpoint section.
cp | Checkpoint state |
Implements gem5::Serializable.
Definition at line 124 of file simple_thread.cc.
References gem5::ThreadState::unserialize(), and gem5::unserialize().
Referenced by gem5::BaseKvmCPU::unserializeThread().
|
protected |
Definition at line 110 of file simple_thread.hh.
Referenced by getHtmCheckpointPtr(), and setHtmCheckpointPtr().
|
protected |
Definition at line 107 of file simple_thread.hh.
Referenced by clearArchRegs(), instAddr(), microPC(), nextInstAddr(), pcState(), and pcStateNoRecord().
|
protected |
Definition at line 104 of file simple_thread.hh.
Referenced by clearArchRegs(), readCCReg(), readCCRegFlat(), setCCReg(), setCCRegFlat(), and SimpleThread().
EventQueue gem5::SimpleThread::comInstEventQueue |
An instruction-based event queue.
Used for scheduling events based on number of instructions committed.
Definition at line 130 of file simple_thread.hh.
Referenced by descheduleInstCountEvent(), gem5::minor::Execute::doInstCommitAccounting(), getCurrentInstCount(), scheduleInstCountEvent(), gem5::BaseSimpleCPU::serviceInstCountEvents(), gem5::BaseKvmCPU::setupInstStop(), and gem5::BaseKvmCPU::tick().
TheISA::Decoder gem5::SimpleThread::decoder |
Definition at line 136 of file simple_thread.hh.
Referenced by gem5::BaseSimpleCPU::advancePC(), gem5::BaseSimpleCPU::checkForInterrupts(), getDecoderPtr(), gem5::BaseSimpleCPU::preExecute(), gem5::BaseSimpleCPU::setupFetchRequest(), and takeOverFrom().
|
protected |
Definition at line 100 of file simple_thread.hh.
Referenced by clearArchRegs(), readFloatReg(), readFloatRegFlat(), setFloatReg(), setFloatRegFlat(), and SimpleThread().
int64_t gem5::SimpleThread::htmTransactionStarts |
Definition at line 139 of file simple_thread.hh.
Referenced by gem5::TimingSimpleCPU::completeIfetch(), gem5::CheckerCPU::getHtmTransactionalDepth(), gem5::SimpleExecContext::getHtmTransactionalDepth(), and htmAbortTransaction().
int64_t gem5::SimpleThread::htmTransactionStops |
Definition at line 140 of file simple_thread.hh.
Referenced by gem5::TimingSimpleCPU::completeDataAccess(), gem5::CheckerCPU::getHtmTransactionalDepth(), gem5::SimpleExecContext::getHtmTransactionalDepth(), and htmAbortTransaction().
|
protected |
Definition at line 101 of file simple_thread.hh.
Referenced by clearArchRegs(), readIntReg(), readIntRegFlat(), setIntReg(), setIntRegFlat(), and SimpleThread().
|
protected |
Definition at line 105 of file simple_thread.hh.
Referenced by clearArchRegs(), flattenRegId(), getIsaPtr(), getWritableVecPredReg(), getWritableVecReg(), readCCReg(), readFloatReg(), readIntReg(), readMiscReg(), readMiscRegNoEffect(), readVecElem(), readVecPredReg(), readVecReg(), setCCReg(), setFloatReg(), setIntReg(), setMiscReg(), setMiscRegNoEffect(), setVecElem(), setVecPredReg(), setVecReg(), SimpleThread(), and takeOverFrom().
|
protected |
True if the memory access should be skipped for this instruction.
Definition at line 116 of file simple_thread.hh.
Referenced by readMemAccPredicate(), and setMemAccPredicate().
BaseMMU* gem5::SimpleThread::mmu |
Definition at line 134 of file simple_thread.hh.
Referenced by gem5::AtomicSimpleCPU::amoMem(), demapPage(), gem5::TimingSimpleCPU::fetch(), getMMUPtr(), gem5::TimingSimpleCPU::initiateMemAMO(), gem5::TimingSimpleCPU::initiateMemRead(), gem5::minor::ExecContext::mwaitAtomic(), gem5::CheckerCPU::mwaitAtomic(), gem5::SimpleExecContext::mwaitAtomic(), gem5::AtomicSimpleCPU::readMem(), gem5::AtomicSimpleCPU::tick(), gem5::AtomicSimpleCPU::writeMem(), and gem5::TimingSimpleCPU::writeMem().
PCEventQueue gem5::SimpleThread::pcEventQueue |
Definition at line 125 of file simple_thread.hh.
Referenced by remove(), and schedule().
|
protected |
Did this instruction execute or is it predicated false.
Definition at line 113 of file simple_thread.hh.
Referenced by readPredicate(), and setPredicate().
System* gem5::SimpleThread::system |
Definition at line 132 of file simple_thread.hh.
Referenced by getSystemPtr().
|
protected |
Definition at line 103 of file simple_thread.hh.
Referenced by clearArchRegs(), getWritableVecPredReg(), getWritableVecPredRegFlat(), readVecPredReg(), readVecPredRegFlat(), setVecPredReg(), setVecPredRegFlat(), and SimpleThread().
|
protected |
Definition at line 102 of file simple_thread.hh.
Referenced by clearArchRegs(), getWritableVecReg(), getWritableVecRegFlat(), readVecElem(), readVecElemFlat(), readVecReg(), readVecRegFlat(), setVecElem(), setVecElemFlat(), setVecReg(), setVecRegFlat(), and SimpleThread().