Go to the documentation of this file.
42 #ifndef __CPU_CHECKER_THREAD_CONTEXT_HH__
43 #define __CPU_CHECKER_THREAD_CONTEXT_HH__
45 #include "arch/types.hh"
46 #include "config/the_isa.hh"
50 #include "debug/Checker.hh"
103 return actualTC->getCurrentInstCount();
228 return actualTC->readIntReg(reg_idx);
234 return actualTC->readFloatReg(reg_idx);
330 return actualTC->readCCReg(reg_idx);
415 return actualTC->readMiscRegNoEffect(misc_reg);
421 return actualTC->readMiscReg(misc_reg);
427 DPRINTF(
Checker,
"Setting misc reg with no effect: %d to both Checker"
428 " and O3..\n", misc_reg);
436 DPRINTF(
Checker,
"Setting misc reg with effect: %d to both Checker"
437 " and O3..\n", misc_reg);
445 return actualTC->flattenRegId(regId);
451 return actualTC->readStCondFailures();
457 actualTC->setStCondFailures(sc_failures);
469 return actualTC->readIntRegFlat(idx);
481 return actualTC->readFloatRegFlat(idx);
493 return actualTC->readVecRegFlat(idx);
502 return actualTC->getWritableVecRegFlat(idx);
514 return actualTC->readVecElemFlat(idx, elem_idx);
527 return actualTC->readVecPredRegFlat(idx);
533 return actualTC->getWritableVecPredRegFlat(idx);
546 return actualTC->readCCRegFlat(idx);
559 panic(
"function not implemented");
565 panic(
"function not implemented");
571 panic(
"function not implemented");
576 #endif // __CPU_CHECKER_EXEC_CONTEXT_HH__
void clearArchRegs() override
ConstVecLane64 readVec64BitLaneReg(const RegId ®) const override
Reads source vector 64bit operand.
Process * getProcessPtr() override
void setThreadId(int id) override
TheISA::VecRegContainer & getWritableVecRegFlat(RegIndex idx) override
Read vector register for modification, flat indexing.
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val) override
void setVecElemFlat(RegIndex idx, const ElemIndex &elem_idx, const TheISA::VecElem &val) override
void setCCReg(RegIndex reg_idx, RegVal val) override
const TheISA::VecRegContainer & readVecReg(const RegId ®) const override
TheISA::PCState pcState() const override
TheISA::Decoder * getDecoderPtr() override
PortProxy & getVirtProxy() override
TheISA::VecRegContainer & getWritableVecReg(const RegId ®) override
Read vector register for modification, hierarchical indexing.
void setThreadId(int id) override
VecReg::Container VecRegContainer
void initMemProxies(ThreadContext *tc) override
Initialise the physical and virtual port proxies and tie them to the data port of the CPU.
void setStatus(Status new_status) override
ConstVecLane32 readVec32BitLaneReg(const RegId ®) const override
Reads source vector 32bit operand.
TheISA::VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx) override
void clearArchRegs() override
virtual void regStats(const std::string &name)
RegVal readFloatRegFlat(RegIndex idx) const override
RegVal readCCReg(RegIndex reg_idx) const override
const TheISA::VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const override
const TheISA::VecRegContainer & readVecRegFlat(RegIndex idx) const override
unsigned readStCondFailures() const override
virtual void setVecLane(const RegId ®, const LaneData< LaneSize::EightByte > &val) override
const TheISA::VecElem & readVecElem(const RegId ®) const override
int ContextID
Globally unique thread context ID.
void regStats(const std::string &name) override
uint64_t Tick
Tick count type.
VecPredReg::Container VecPredRegContainer
void setIntReg(RegIndex reg_idx, RegVal val) override
void setCCReg(RegIndex reg_idx, RegVal val) override
bool schedule(PCEvent *e) override
const TheISA::VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elem_idx) const override
ContextID contextId() const override
void pcStateNoRecord(const TheISA::PCState &val) override
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val) override
void scheduleInstCountEvent(Event *event, Tick count) override
virtual void setVecLane(const RegId ®, const LaneData< LaneSize::Byte > &val) override
Write a lane of the destination vector register.
CheckerCPU * checkerCPU
Pointer to the checker CPU.
void pcState(const TheISA::PCState &val) override
Sets this thread's PC state.
BaseMMU * getMMUPtr() override
void recordPCChange(const TheISA::PCState &val)
void copyArchRegs(ThreadContext *tc) override
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
Register ID: describe an architectural register with its class and index.
void setIntReg(RegIndex reg_idx, RegVal val) override
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void setMiscReg(RegIndex misc_reg, RegVal val) override
void setMiscReg(RegIndex misc_reg, RegVal val) override
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
int64_t Counter
Statistics counter type.
RegVal readMiscReg(RegIndex misc_reg) override
void setProcessPtr(Process *p) override
void setVecElem(const RegId ®, const TheISA::VecElem &val) override
int cpuId() const override
ThreadContext is the external interface to all thread state for anything outside of the CPU.
void setStatus(Status newStatus) override
Vector Lane abstraction Another view of a container.
Counter readFuncExeInst() const override
void setContextId(ContextID id) override
void setVecPredReg(const RegId ®, const TheISA::VecPredRegContainer &val) override
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
void setVecElem(const RegId ®, const TheISA::VecElem &val) override
BaseCPU * getCpuPtr() override
void halt() override
Set the status to Halted.
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
RegId flattenRegId(const RegId ®Id) const override
Status status() const override
CheckerThreadContext(TC *actual_tc, CheckerCPU *checker_cpu)
RegVal readFloatReg(RegIndex reg_idx) const override
RegVal readIntRegFlat(RegIndex idx) const override
Flat register interfaces.
void connectMemPorts(ThreadContext *tc)
void copyState(ThreadContext *oldContext)
void setVecPredReg(const RegId ®, const TheISA::VecPredRegContainer &val) override
PortProxy & getPhysProxy() override
bool remove(PCEvent *e) override
void setIntRegFlat(RegIndex idx, RegVal val) override
void copyArchRegs(ThreadContext *tc) override
TC * actualTC
The main CPU's ThreadContext, or class that implements the ThreadContext interface.
Tick getCurrentInstCount() override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
const std::string & name()
void setFloatReg(RegIndex reg_idx, RegVal val) override
void setVecPredRegFlat(RegIndex idx, const TheISA::VecPredRegContainer &val) override
Addr nextInstAddr() const override
Reads this thread's next PC.
RegVal readIntReg(RegIndex reg_idx) const override
const TheISA::VecPredRegContainer & readVecPredReg(const RegId ®) const override
RegVal readCCRegFlat(RegIndex idx) const override
CheckerCPU * getCheckerCpuPtr() override
ConstVecLane8 readVec8BitLaneReg(const RegId ®) const override
Vector Register Lane Interfaces.
BaseISA * getIsaPtr() override
void takeOverFrom(ThreadContext *oldContext) override
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
This object is a proxy for a port or other object which implements the functional response protocol,...
GenericISA::DelaySlotPCState< MachInst > PCState
void activate() override
Set the status to Active.
Tick readLastSuspend() override
uint32_t socketId() const override
uint16_t ElemIndex
Logical vector register elem index type.
void descheduleInstCountEvent(Event *event) override
SimpleThread * checkerTC
The checker's own SimpleThread.
Derived ThreadContext class for use with the Checker.
System * getSystemPtr() override
MicroPC microPC() const override
Reads this thread's next PC.
void setVecRegFlat(RegIndex idx, const TheISA::VecRegContainer &val) override
ConstVecLane16 readVec16BitLaneReg(const RegId ®) const override
Reads source vector 16bit operand.
Tick readLastActivate() override
void setCCRegFlat(RegIndex idx, RegVal val) override
void setFloatRegFlat(RegIndex idx, RegVal val) override
void suspend() override
Set the status to Suspended.
virtual void setVecLane(const RegId ®, const LaneData< LaneSize::TwoByte > &val) override
Addr instAddr() const override
Reads this thread's PC.
void setFloatReg(RegIndex reg_idx, RegVal val) override
void setContextId(ContextID id) override
virtual void setVecLane(const RegId ®, const LaneData< LaneSize::FourByte > &val) override
void setStCondFailures(unsigned sc_failures) override
LaneSize is an abstraction of a LS byte value for the execution and thread contexts to handle values ...
void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override
int threadId() const override
Returns this thread's ID number.
#define panic(...)
This implements a cprintf based panic() function.
TheISA::PCState pcState() const override
Reads this thread's PC state.
TheISA::VecPredRegContainer & getWritableVecPredReg(const RegId ®) override
Generated on Tue Jun 22 2021 15:28:19 for gem5 by doxygen 1.8.17