Go to the documentation of this file.
42 #ifndef __CPU_SIMPLE_THREAD_HH__
43 #define __CPU_SIMPLE_THREAD_HH__
52 #include "arch/isa.hh"
53 #include "arch/vecregs.hh"
56 #include "config/the_isa.hh"
60 #include "debug/CCRegs.hh"
61 #include "debug/FloatRegs.hh"
62 #include "debug/IntRegs.hh"
63 #include "debug/VecPredRegs.hh"
64 #include "debug/VecRegs.hh"
231 void halt()
override;
273 return isa->readMiscRegNoEffect(misc_reg);
279 return isa->readMiscReg(misc_reg);
285 return isa->setMiscRegNoEffect(misc_reg,
val);
291 return isa->setMiscReg(misc_reg,
val);
297 return isa->flattenRegId(regId);
328 const auto ®_class = reg_file.regClass;
331 DPRINTFV(reg_class.debug(),
"Reading %s reg %s (%d) as %#x.\n",
332 reg.className(), reg_class.regName(arch_reg), idx,
val);
342 const auto ®_class = reg_file.regClass;
345 DPRINTFV(reg_class.debug(),
"Reading %s reg %d as %#x.\n",
346 reg.className(), idx,
val);
358 const auto ®_class = reg_file.regClass;
360 reg_file.get(idx,
val);
361 DPRINTFV(reg_class.debug(),
"Reading %s register %s (%d) as %s.\n",
362 reg.className(), reg_class.regName(arch_reg), idx,
363 reg_class.valString(
val));
372 const auto ®_class = reg_file.regClass;
374 reg_file.get(idx,
val);
375 DPRINTFV(reg_class.debug(),
"Reading %s register %d as %s.\n",
376 reg.className(), idx, reg_class.valString(
val));
386 return reg_file.ptr(idx);
395 return reg_file.ptr(idx);
409 const auto ®_class = reg_file.regClass;
411 DPRINTFV(reg_class.debug(),
"Setting %s register %s (%d) to %#x.\n",
412 reg.className(), reg_class.regName(arch_reg), idx,
val);
413 reg_file.reg(idx) =
val;
425 const auto ®_class = reg_file.regClass;
427 DPRINTFV(reg_class.debug(),
"Setting %s register %d to %#x.\n",
428 reg.className(), idx,
val);
429 reg_file.reg(idx) =
val;
440 const auto ®_class = reg_file.regClass;
442 DPRINTFV(reg_class.debug(),
"Setting %s register %s (%d) to %s.\n",
443 reg.className(), reg_class.regName(arch_reg), idx,
444 reg_class.valString(
val));
445 reg_file.set(idx,
val);
454 const auto ®_class = reg_file.regClass;
456 DPRINTFV(reg_class.debug(),
"Setting %s register %d to %s.\n",
457 reg.className(), idx, reg_class.valString(
val));
458 reg_file.set(idx,
val);
471 #endif // __CPU_SIMPLE_THREAD_HH__
RegVal readMiscReg(RegIndex misc_reg) override
void * getWritableReg(const RegId &arch_reg) override
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
RegVal getReg(const RegId &arch_reg) const override
void setRegFlat(const RegId ®, RegVal val) override
int64_t htmTransactionStops
void setReg(const RegId &arch_reg, const void *val) override
Process * getProcessPtr() override
CheckerCPU * getCheckerCpuPtr() override
Struct for holding general thread state that is needed across CPU models.
void setRegFlat(const RegId ®, const void *val) override
void copyArchRegs(ThreadContext *tc) override
Tick readLastSuspend() override
bool remove(PCEvent *event) override
void setMiscReg(RegIndex misc_reg, RegVal val) override
void setStCondFailures(unsigned sc_failures) override
void unserialize(CheckpointIn &cp) override
Unserialize an object.
BaseMMU * getMMUPtr() override
void * getWritableRegFlat(const RegId ®) override
bool schedule(PCEvent *event) override
bool remove(PCEvent *e) override
std::string csprintf(const char *format, const Args &...args)
void clearArchRegs() override
void setContextId(ContextID id) override
std::unique_ptr< BaseHTMCheckpoint > _htmCheckpoint
void activate() override
Set the status to Active.
void setReg(const RegId &arch_reg, RegVal val) override
int64_t htmTransactionStarts
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void setThreadId(int id) override
InstDecoder * getDecoderPtr() override
int cpuId() const override
unsigned readStCondFailures() const override
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
std::unique_ptr< PCStateBase > _pcState
bool readMemAccPredicate()
System * getSystemPtr() override
void copyState(ThreadContext *oldContext)
ThreadContext is the external interface to all thread state for anything outside of the CPU.
bool readPredicate() const
void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
void deschedule(Event *event)
Deschedule the specified event.
uint32_t socketId() const override
unsigned storeCondFailures
uint64_t Tick
Tick count type.
void getReg(const RegId &arch_reg, void *val) const override
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
void setMemAccPredicate(bool val)
void setThreadId(ThreadID id)
Queue of events sorted in time order.
void demapPage(Addr vaddr, uint64_t asn)
int threadId() const override
void takeOverFrom(ThreadContext *oldContext) override
bool memAccPredicate
True if the memory access should be skipped for this instruction.
bool schedule(PCEvent *e) override
const PCStateBase & pcState() const override
ThreadID threadId() const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void halt() override
Set the status to Halted.
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
BaseISA * getIsaPtr() const override
void setStatus(Status newStatus) override
Tick getCurTick() const
While curTick() is useful for any object assigned to this event queue, if an object that is assigned ...
ContextID contextId() const
PCEventQueue pcEventQueue
ContextID contextId() const override
void setContextId(ContextID id)
std::array< RegFile, CCRegClass+1 > regFiles
RegVal getRegFlat(const RegId ®) const override
Flat register interfaces.
Tick readLastActivate() override
ThreadContext * getTC()
Returns the pointer to this SimpleThread's ThreadContext.
void scheduleInstCountEvent(Event *event, Tick count) override
void setProcessPtr(Process *p) override
void setProcessPtr(Process *p)
void suspend() override
Set the status to Suspended.
ThreadContext::Status _status
void demapPage(Addr vaddr, uint64_t asn)
int ContextID
Globally unique thread context ID.
void schedule(Event *event, Tick when, bool global=false)
Schedule the given event on this queue.
void descheduleInstCountEvent(Event *event) override
std::ostream CheckpointOut
void pcStateNoRecord(const PCStateBase &val) override
Tick getCurrentInstCount() override
uint32_t socketId() const
void pcState(const PCStateBase &val) override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
ThreadContext::Status Status
BaseCPU * getCpuPtr() override
Tick readLastActivate() const
Status status() const override
Tick readLastSuspend() const
void getRegFlat(const RegId ®, void *val) const override
SimpleThread(BaseCPU *_cpu, int _thread_num, System *_system, BaseMMU *_mmu, BaseISA *_isa, InstDecoder *_decoder)
EventQueue comInstEventQueue
An instruction-based event queue.
void setPredicate(bool val)
void serialize(CheckpointOut &cp) const override
Serialize an object.
RegId flattenRegId(const RegId ®Id) const override
Register ID: describe an architectural register with its class and index.
bool predicate
Did this instruction execute or is it predicated false.
Process * getProcessPtr()
Generated on Wed Jul 13 2022 10:39:17 for gem5 by doxygen 1.8.17