Go to the documentation of this file.
42 #ifndef __CPU_THREAD_CONTEXT_HH__
43 #define __CPU_THREAD_CONTEXT_HH__
51 #include "arch/vecregs.hh"
53 #include "config/the_isa.hh"
129 virtual int cpuId()
const = 0;
131 virtual uint32_t
socketId()
const = 0;
168 virtual void halt() = 0;
276 std::unique_ptr<PCStateBase> new_pc(
getIsaPtr()->newPCState(
addr));
301 virtual int exit() {
return 1; };
407 void unserialize(ThreadContext &tc, CheckpointIn &cp);
422 void takeOverFrom(ThreadContext &new_tc, ThreadContext &old_tc);
void unserialize(ThreadContext &tc, CheckpointIn &cp)
void setIntRegFlat(RegIndex idx, RegVal val)
static void compare(ThreadContext *one, ThreadContext *two)
function to compare two thread contexts (for debugging)
virtual RegVal readMiscReg(RegIndex misc_reg)=0
virtual System * getSystemPtr()=0
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
virtual Tick readLastSuspend()=0
RegVal readFloatReg(RegIndex reg_idx) const
TheISA::VecRegContainer readVecRegFlat(RegIndex idx) const
@ Halted
Permanently shut down.
@ VecElemClass
Vector Register Native Elem lane.
virtual RegVal getReg(const RegId ®) const
RegVal readIntRegFlat(RegIndex idx) const
@ CCRegClass
Condition-code register.
virtual BaseMMU * getMMUPtr()=0
virtual const PCStateBase & pcState() const =0
virtual void setStatus(Status new_status)=0
virtual ContextID contextId() const =0
virtual void activate()=0
Set the status to Active.
virtual RegVal getRegFlat(const RegId ®) const
Flat register interfaces.
virtual void * getWritableReg(const RegId ®)
virtual void regStats(const std::string &name)
virtual void halt()=0
Set the status to Halted.
void setUseForClone(bool new_val)
virtual int cpuId() const =0
void setCCReg(RegIndex reg_idx, RegVal val)
virtual void * getWritableRegFlat(const RegId ®)=0
virtual void setProcessPtr(Process *p)=0
void takeOverFrom(ThreadContext &ntc, ThreadContext &otc)
Copy state between thread contexts in preparation for CPU handover.
virtual Status status() const =0
virtual Tick getCurrentInstCount()=0
virtual void setThreadId(int id)=0
@ FloatRegClass
Floating-point register.
virtual void copyArchRegs(ThreadContext *tc)=0
void quiesceTick(Tick resume)
Quiesce, suspend, and schedule activate at resume.
virtual void setHtmCheckpointPtr(BaseHTMCheckpointPtr cpt)=0
virtual uint32_t socketId() const =0
ThreadContext is the external interface to all thread state for anything outside of the CPU.
void quiesce()
Quiesce thread context.
virtual RegId flattenRegId(const RegId ®_id) const =0
RegVal readIntReg(RegIndex reg_idx) const
TheISA::VecRegContainer & getWritableVecReg(const RegId ®)
@ Suspended
Temporarily inactive.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
virtual InstDecoder * getDecoderPtr()=0
ProbePointArg< PacketInfo > Packet
Packet probe point.
uint64_t Tick
Tick count type.
RegVal readCCRegFlat(RegIndex idx) const
virtual Tick readLastActivate()=0
TheISA::VecRegContainer readVecReg(const RegId ®) const
void setCCRegFlat(RegIndex idx, RegVal val)
void setVecElemFlat(RegIndex idx, RegVal val)
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
TheISA::VecRegContainer & getWritableVecRegFlat(RegIndex idx)
virtual void takeOverFrom(ThreadContext *old_context)=0
void serialize(const ThreadContext &tc, CheckpointOut &cp)
Thread context serialization helpers.
virtual void sendFunctional(PacketPtr pkt)
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
virtual void setRegFlat(const RegId ®, RegVal val)
virtual BaseHTMCheckpointPtr & getHtmCheckpointPtr()=0
virtual unsigned readStCondFailures() const =0
RegVal readVecElemFlat(RegIndex idx) const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual void setContextId(ContextID id)=0
RegVal readFloatRegFlat(RegIndex idx) const
const std::string & name()
virtual void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause)=0
virtual void scheduleInstCountEvent(Event *event, Tick count)=0
virtual Process * getProcessPtr()=0
virtual void pcStateNoRecord(const PCStateBase &val)=0
@ IntRegClass
Integer register.
virtual void suspend()=0
Set the status to Suspended.
void setVecElem(const RegId ®, RegVal val)
virtual void descheduleInstCountEvent(Event *event)=0
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val)
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
@ Halting
Trying to exit and waiting for an event to completely exit.
int ContextID
Globally unique thread context ID.
RegVal readVecElem(const RegId ®) const
std::ostream CheckpointOut
virtual BaseCPU * getCpuPtr()=0
virtual void clearArchRegs()=0
virtual int threadId() const =0
void setFloatReg(RegIndex reg_idx, RegVal val)
@ VecRegClass
Vector Register.
virtual BaseISA * getIsaPtr() const =0
virtual void setStCondFailures(unsigned sc_failures)=0
RegVal readCCReg(RegIndex reg_idx) const
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void setVecRegFlat(RegIndex idx, const TheISA::VecRegContainer &val)
virtual CheckerCPU * getCheckerCpuPtr()=0
void setIntReg(RegIndex reg_idx, RegVal val)
Register ID: describe an architectural register with its class and index.
virtual void setMiscRegNoEffect(RegIndex misc_reg, RegVal val)=0
virtual void setReg(const RegId ®, RegVal val)
void setFloatRegFlat(RegIndex idx, RegVal val)
Generated on Wed Jul 13 2022 10:39:08 for gem5 by doxygen 1.8.17