gem5
v20.0.0.3
|
Derived ThreadContext class for use with the Checker. More...
#include <thread_context.hh>
Public Member Functions | |
CheckerThreadContext (TC *actual_tc, CheckerCPU *checker_cpu) | |
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 |
uint32_t | socketId () const override |
int | cpuId () const override |
ContextID | contextId () const override |
void | setContextId (ContextID id) override |
int | threadId () const override |
Returns this thread's ID number. More... | |
void | setThreadId (int id) override |
BaseTLB * | getITBPtr () override |
BaseTLB * | getDTBPtr () override |
CheckerCPU * | getCheckerCpuPtr () override |
BaseISA * | getIsaPtr () override |
TheISA::Decoder * | getDecoderPtr () override |
System * | getSystemPtr () override |
::Kernel::Statistics * | getKernelStats () override |
Process * | getProcessPtr () override |
void | setProcessPtr (Process *p) override |
PortProxy & | getPhysProxy () 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... | |
void | connectMemPorts (ThreadContext *tc) |
void | syscall (Fault *fault) override |
Executes a syscall in SE mode. More... | |
Status | status () const override |
void | setStatus (Status new_status) 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... | |
void | dumpFuncProfile () override |
void | takeOverFrom (ThreadContext *oldContext) override |
void | regStats (const std::string &name) override |
EndQuiesceEvent * | getQuiesceEvent () override |
Tick | readLastActivate () override |
Tick | readLastSuspend () override |
void | profileClear () override |
void | profileSample () override |
void | copyArchRegs (ThreadContext *tc) override |
void | clearArchRegs () override |
RegVal | readIntReg (RegIndex reg_idx) const override |
RegVal | readFloatReg (RegIndex reg_idx) const override |
const VecRegContainer & | readVecReg (const RegId ®) const override |
VecRegContainer & | getWritableVecReg (const RegId ®) override |
Read vector register for modification, hierarchical indexing. More... | |
const VecElem & | readVecElem (const RegId ®) const override |
const VecPredRegContainer & | readVecPredReg (const RegId ®) const override |
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 VecRegContainer &val) override |
void | setVecElem (const RegId ®, const VecElem &val) override |
void | setVecPredReg (const RegId ®, const VecPredRegContainer &val) override |
void | setCCReg (RegIndex reg_idx, RegVal val) override |
TheISA::PCState | pcState () const override |
Reads this thread's PC state. More... | |
void | pcState (const TheISA::PCState &val) override |
Sets this thread's PC state. More... | |
void | setNPC (Addr val) |
void | pcStateNoRecord (const TheISA::PCState &val) override |
Addr | instAddr () const override |
Reads this thread's PC. More... | |
Addr | nextInstAddr () const override |
Reads this thread's next PC. More... | |
MicroPC | microPC () const override |
Reads this thread's next PC. More... | |
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 |
void | setStCondFailures (unsigned sc_failures) override |
Counter | readFuncExeInst () const 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 VecRegContainer & | readVecRegFlat (RegIndex idx) const override |
VecRegContainer & | getWritableVecRegFlat (RegIndex idx) override |
Read vector register for modification, flat indexing. More... | |
void | setVecRegFlat (RegIndex idx, const VecRegContainer &val) override |
const VecElem & | readVecElemFlat (RegIndex idx, const ElemIndex &elem_idx) const override |
void | setVecElemFlat (RegIndex idx, const ElemIndex &elem_idx, const VecElem &val) override |
const VecPredRegContainer & | readVecPredRegFlat (RegIndex idx) const override |
VecPredRegContainer & | getWritableVecPredRegFlat (RegIndex idx) override |
void | setVecPredRegFlat (RegIndex idx, const VecPredRegContainer &val) override |
RegVal | readCCRegFlat (RegIndex idx) const override |
void | setCCRegFlat (RegIndex idx, RegVal val) override |
ConstVecLane8 | readVec8BitLaneReg (const RegId ®) const override |
Vector Register Lane Interfaces. More... | |
ConstVecLane16 | readVec16BitLaneReg (const RegId ®) const override |
Reads source vector 16bit operand. More... | |
ConstVecLane32 | readVec32BitLaneReg (const RegId ®) const override |
Reads source vector 32bit operand. More... | |
ConstVecLane64 | readVec64BitLaneReg (const RegId ®) const override |
Reads source vector 64bit operand. More... | |
virtual void | setVecLane (const RegId ®, const LaneData< LaneSize::Byte > &val) override |
Write a lane of the destination vector register. More... | |
virtual void | setVecLane (const RegId ®, const LaneData< LaneSize::TwoByte > &val) override |
virtual void | setVecLane (const RegId ®, const LaneData< LaneSize::FourByte > &val) override |
virtual void | setVecLane (const RegId ®, const LaneData< LaneSize::EightByte > &val) override |
![]() | |
virtual | ~ThreadContext () |
void | quiesce () |
Quiesce thread context. More... | |
void | quiesceTick (Tick resume) |
Quiesce, suspend, and schedule activate at resume. More... | |
void | setNPC (Addr val) |
virtual int | exit () |
Private Attributes | |
TC * | actualTC |
The main CPU's ThreadContext, or class that implements the ThreadContext interface. More... | |
SimpleThread * | checkerTC |
The checker's own SimpleThread. More... | |
CheckerCPU * | checkerCPU |
Pointer to the checker CPU. More... | |
Additional Inherited Members | |
![]() | |
enum | Status { Active, Suspended, Halting, Halted } |
![]() | |
static void | compare (ThreadContext *one, ThreadContext *two) |
function to compare two thread contexts (for debugging) More... | |
![]() | |
int | intResult = DefaultIntResult |
double | floatResult = DefaultFloatResult |
int | intOffset = 0 |
![]() | |
static const int | ints [] |
static const double | floats [] |
static const int | DefaultIntResult = 0 |
static const double | DefaultFloatResult = 0.0 |
![]() | |
typedef TheISA::MachInst | MachInst |
using | VecRegContainer = TheISA::VecRegContainer |
using | VecElem = TheISA::VecElem |
using | VecPredRegContainer = TheISA::VecPredRegContainer |
Derived ThreadContext class for use with the Checker.
The template parameter is the ThreadContext class used by the specific CPU being verified. This CheckerThreadContext is then used by the main CPU in place of its usual ThreadContext class. It handles updating the checker's state any time state is updated externally through the ThreadContext.
Definition at line 69 of file thread_context.hh.
|
inline |
Definition at line 72 of file thread_context.hh.
|
inlineoverridevirtual |
Set the status to Active.
Implements ThreadContext.
Definition at line 200 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 245 of file thread_context.hh.
References SimpleThread::clearArchRegs().
|
inline |
Definition at line 178 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 115 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 238 of file thread_context.hh.
References SimpleThread::copyArchRegs().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 113 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 99 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 208 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 471 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 138 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 109 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 104 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 146 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 135 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 143 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 133 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 154 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 163 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 159 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 225 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 151 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 166 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 351 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 559 of file thread_context.hh.
|
inlineoverridevirtual |
Read vector register for modification, hierarchical indexing.
Implements ThreadContext.
Definition at line 276 of file thread_context.hh.
|
inlineoverridevirtual |
Read vector register for modification, flat indexing.
Implements ThreadContext.
Definition at line 528 of file thread_context.hh.
|
inlineoverridevirtual |
Set the status to Halted.
Implements ThreadContext.
Definition at line 206 of file thread_context.hh.
|
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 ThreadContext.
Definition at line 172 of file thread_context.hh.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Reads this thread's next PC.
Implements ThreadContext.
Definition at line 438 of file thread_context.hh.
|
inlineoverridevirtual |
Reads this thread's next PC.
Implements ThreadContext.
Definition at line 435 of file thread_context.hh.
|
inlineoverridevirtual |
Reads this thread's PC state.
Implements ThreadContext.
Definition at line 405 of file thread_context.hh.
|
inlineoverridevirtual |
Sets this thread's PC state.
Implements ThreadContext.
Definition at line 409 of file thread_context.hh.
References DPRINTF, SimpleThread::pcState(), and CheckerCPU::recordPCChange().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 426 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 233 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 234 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 357 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 571 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 261 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 507 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 489 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 255 of file thread_context.hh.
|
inlineoverridevirtual |
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 ThreadContext.
Definition at line 495 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 230 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 231 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 447 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 441 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 477 of file thread_context.hh.
|
inlineoverridevirtual |
Reads source vector 16bit operand.
Implements ThreadContext.
Definition at line 292 of file thread_context.hh.
|
inlineoverridevirtual |
Reads source vector 32bit operand.
Implements ThreadContext.
Definition at line 299 of file thread_context.hh.
|
inlineoverridevirtual |
Reads source vector 64bit operand.
Implements ThreadContext.
Definition at line 306 of file thread_context.hh.
|
inlineoverridevirtual |
Vector Register Lane Interfaces.
Reads source vector 8bit operand.
Implements ThreadContext.
Definition at line 285 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 339 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 540 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 345 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 553 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 267 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 519 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 218 of file thread_context.hh.
References SimpleThread::regStats().
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Implements PCEventScope.
Definition at line 90 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 94 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 398 of file thread_context.hh.
References SimpleThread::setCCReg().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 577 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 118 of file thread_context.hh.
References SimpleThread::setContextId().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 370 of file thread_context.hh.
References SimpleThread::setFloatReg().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 513 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 363 of file thread_context.hh.
References SimpleThread::setIntReg().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 501 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 462 of file thread_context.hh.
References DPRINTF, and SimpleThread::setMiscReg().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 453 of file thread_context.hh.
References DPRINTF, and SimpleThread::setMiscRegNoEffect().
|
inline |
Definition at line 419 of file thread_context.hh.
References ThreadContext::setNPC().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 161 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 193 of file thread_context.hh.
References SimpleThread::setStatus().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 483 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 127 of file thread_context.hh.
References SimpleThread::setThreadId().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 384 of file thread_context.hh.
References SimpleThread::setVecElem().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 546 of file thread_context.hh.
|
inlineoverridevirtual |
Write a lane of the destination vector register.
Implements ThreadContext.
Definition at line 313 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 319 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 325 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 331 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 391 of file thread_context.hh.
References SimpleThread::setVecPredReg().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 565 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 377 of file thread_context.hh.
References SimpleThread::setVecReg().
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 534 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 111 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 190 of file thread_context.hh.
|
inlineoverridevirtual |
Set the status to Suspended.
Implements ThreadContext.
Definition at line 203 of file thread_context.hh.
|
inlineoverridevirtual |
Executes a syscall in SE mode.
Implements ThreadContext.
Definition at line 185 of file thread_context.hh.
|
inlineoverridevirtual |
Implements ThreadContext.
Definition at line 211 of file thread_context.hh.
References SimpleThread::copyState().
|
inlineoverridevirtual |
Returns this thread's ID number.
Implements ThreadContext.
Definition at line 125 of file thread_context.hh.
|
private |
The main CPU's ThreadContext, or class that implements the ThreadContext interface.
Definition at line 81 of file thread_context.hh.
|
private |
Pointer to the checker CPU.
Definition at line 87 of file thread_context.hh.
|
private |
The checker's own SimpleThread.
Will be updated any time anything uses this ThreadContext to externally update a thread's state.
Definition at line 85 of file thread_context.hh.