Go to the documentation of this file.
42 #ifndef __CPU_CHECKER_THREAD_CONTEXT_HH__
43 #define __CPU_CHECKER_THREAD_CONTEXT_HH__
45 #include "arch/pcstate.hh"
46 #include "config/the_isa.hh"
50 #include "debug/Checker.hh"
95 assert(actual_ret == check_ret);
104 assert(actual_ret == check_ret);
121 return actualTC->getCurrentInstCount();
244 return actualTC->readIntReg(reg_idx);
250 return actualTC->readFloatReg(reg_idx);
289 return actualTC->readCCReg(reg_idx);
374 return actualTC->readMiscRegNoEffect(misc_reg);
380 return actualTC->readMiscReg(misc_reg);
386 DPRINTF(
Checker,
"Setting misc reg with no effect: %d to both Checker"
387 " and O3..\n", misc_reg);
395 DPRINTF(
Checker,
"Setting misc reg with effect: %d to both Checker"
396 " and O3..\n", misc_reg);
404 return actualTC->flattenRegId(regId);
410 return actualTC->readStCondFailures();
416 actualTC->setStCondFailures(sc_failures);
422 return actualTC->readIntRegFlat(idx);
434 return actualTC->readFloatRegFlat(idx);
446 return actualTC->readVecRegFlat(idx);
455 return actualTC->getWritableVecRegFlat(idx);
467 return actualTC->readVecElemFlat(idx, elem_idx);
480 return actualTC->readVecPredRegFlat(idx);
486 return actualTC->getWritableVecPredRegFlat(idx);
499 return actualTC->readCCRegFlat(idx);
512 panic(
"function not implemented");
518 return actualTC->getHtmCheckpointPtr();
524 panic(
"function not implemented");
531 #endif // __CPU_CHECKER_EXEC_CONTEXT_HH__
TheISA::VecRegContainer & getWritableVecRegFlat(RegIndex idx) override
Read vector register for modification, flat indexing.
void setIntReg(RegIndex reg_idx, RegVal val) override
RegVal readIntRegFlat(RegIndex idx) const override
Flat register interfaces.
int cpuId() const override
CheckerThreadContext(TC *actual_tc, CheckerCPU *checker_cpu)
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
Addr nextInstAddr() const override
Reads this thread's next PC.
TheISA::Decoder * getDecoderPtr() override
void setMiscReg(RegIndex misc_reg, RegVal val) override
void setIntReg(RegIndex reg_idx, RegVal val) override
Addr instAddr() const override
Reads this thread's PC.
Tick getCurrentInstCount() override
VecPredReg::Container VecPredRegContainer
const TheISA::VecPredRegContainer & readVecPredReg(const RegId ®) const override
void halt() override
Set the status to Halted.
void descheduleInstCountEvent(Event *event) override
void setIntRegFlat(RegIndex idx, RegVal val) override
uint32_t socketId() const override
void copyArchRegs(ThreadContext *tc) override
SimpleThread * checkerTC
The checker's own SimpleThread.
void setMiscReg(RegIndex misc_reg, RegVal val) override
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
void setVecElem(const RegId ®, const TheISA::VecElem &val) override
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val) override
void initMemProxies(ThreadContext *tc) override
Initialise the physical and virtual port proxies and tie them to the data port of the CPU.
bool remove(PCEvent *e) override
void setCCRegFlat(RegIndex idx, RegVal val) override
void clearArchRegs() override
virtual void regStats(const std::string &name)
void setContextId(ContextID id) override
bool remove(PCEvent *e) override
TC * actualTC
The main CPU's ThreadContext, or class that implements the ThreadContext interface.
Derived ThreadContext class for use with the Checker.
void scheduleInstCountEvent(Event *event, Tick count) override
RegVal readMiscReg(RegIndex misc_reg) override
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val) override
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void setThreadId(int id) override
void setVecElem(const RegId ®, const TheISA::VecElem &val) override
void setVecPredReg(const RegId ®, const TheISA::VecPredRegContainer &val) override
RegVal readIntReg(RegIndex reg_idx) const override
Tick readLastActivate() override
System * getSystemPtr() override
RegId flattenRegId(const RegId ®Id) const override
void recordPCChange(const TheISA::PCState &val)
BaseCPU * getCpuPtr() override
void setFloatRegFlat(RegIndex idx, RegVal val) override
void pcStateNoRecord(const TheISA::PCState &val) override
void pcState(const TheISA::PCState &val) override
Sets this thread's PC state.
void suspend() override
Set the status to Suspended.
RegVal readCCRegFlat(RegIndex idx) const override
TheISA::PCState pcState() const override
Reads this thread's PC state.
CheckerCPU * getCheckerCpuPtr() override
Tick readLastSuspend() override
const TheISA::VecRegContainer & readVecRegFlat(RegIndex idx) const override
void takeOverFrom(ThreadContext *oldContext) override
void copyState(ThreadContext *oldContext)
ThreadContext is the external interface to all thread state for anything outside of the CPU.
void clearArchRegs() override
void connectMemPorts(ThreadContext *tc)
BaseISA * getIsaPtr() override
GenericISA::DelaySlotPCState< 4 > PCState
uint64_t Tick
Tick count type.
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
void setVecElemFlat(RegIndex idx, const ElemIndex &elem_idx, const TheISA::VecElem &val) override
RegVal readCCReg(RegIndex reg_idx) const override
This object is a proxy for a port or other object which implements the functional response protocol,...
TheISA::VecRegContainer & getWritableVecReg(const RegId ®) override
Read vector register for modification, hierarchical indexing.
void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override
void setProcessPtr(Process *p) override
void copyArchRegs(ThreadContext *tc) override
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
TheISA::PCState pcState() const override
bool schedule(PCEvent *e) override
ContextID contextId() const override
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void setFloatReg(RegIndex reg_idx, RegVal val) override
uint16_t ElemIndex
Logical vector register elem index type.
const std::string & name()
void setStatus(Status newStatus) override
CheckerCPU * checkerCPU
Pointer to the checker CPU.
PortProxy & getVirtProxy() override
void setVecPredReg(const RegId ®, const TheISA::VecPredRegContainer &val) override
const TheISA::VecRegContainer & readVecReg(const RegId ®) const override
RegVal readFloatRegFlat(RegIndex idx) const override
bool schedule(PCEvent *e) override
int ContextID
Globally unique thread context ID.
void setCCReg(RegIndex reg_idx, RegVal val) override
Status status() const override
const TheISA::VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const override
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
void activate() override
Set the status to Active.
const TheISA::VecElem & readVecElem(const RegId ®) const override
TheISA::VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx) override
void setContextId(ContextID id) override
TheISA::VecPredRegContainer & getWritableVecPredReg(const RegId ®) override
void setStCondFailures(unsigned sc_failures) override
void setVecRegFlat(RegIndex idx, const TheISA::VecRegContainer &val) override
void setVecPredRegFlat(RegIndex idx, const TheISA::VecPredRegContainer &val) override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void regStats(const std::string &name) override
void setStatus(Status new_status) override
MicroPC microPC() const override
Reads this thread's next PC.
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
const TheISA::VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elem_idx) const override
RegVal readFloatReg(RegIndex reg_idx) const override
unsigned readStCondFailures() const override
int threadId() const override
Returns this thread's ID number.
BaseMMU * getMMUPtr() override
void setCCReg(RegIndex reg_idx, RegVal val) override
void setFloatReg(RegIndex reg_idx, RegVal val) override
Process * getProcessPtr() override
Register ID: describe an architectural register with its class and index.
#define panic(...)
This implements a cprintf based panic() function.
void setThreadId(int id) override
Generated on Tue Sep 21 2021 12:24:24 for gem5 by doxygen 1.8.17