47 #include "config/the_isa.hh" 50 #include "debug/Context.hh" 51 #include "debug/Quiesce.hh" 53 #include "params/BaseCPU.hh" 59 DPRINTF(Context,
"Comparing thread contexts\n");
66 panic(
"Int reg idx %d doesn't match, one: %#x, two: %#x",
75 panic(
"Float reg idx %d doesn't match, one: %#x, two: %#x",
85 panic(
"Vec reg idx %d doesn't match, one: %#x, two: %#x",
95 panic(
"Pred reg idx %d doesn't match, one: %#x, two: %#x",
103 panic(
"Misc reg idx %d doesn't match, one: %#x, two: %#x",
112 panic(
"CC reg idx %d doesn't match, one: %#x, two: %#x",
116 panic(
"PC state doesn't match.");
117 int id1 = one->
cpuId();
118 int id2 = two->
cpuId();
120 panic(
"CPU ids don't match, one: %d, two: %d", id1, id2);
125 panic(
"Context ids don't match, one: %d, two: %d", id1, id2);
150 DPRINTF(Quiesce,
"%s: quiesceTick until %lu\n", cpu->
name(), resume);
235 pcState.unserialize(cp);
258 assert(oqe->tc == &otc);
264 assert(nqe->tc == &ntc);
266 if (oqe->scheduled()) {
267 ncpu->schedule(nqe, oqe->when());
268 ocpu->deschedule(oqe);
#define panic(...)
This implements a cprintf based panic() function.
virtual System * getSystemPtr()=0
#define UNSERIALIZE_CONTAINER(member)
const std::string & name()
virtual TheISA::PCState pcState() const =0
virtual RegVal readIntReg(RegIndex reg_idx) const =0
virtual ::Kernel::Statistics * getKernelStats()=0
virtual void setStatus(Status new_status)=0
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
virtual Process * getProcessPtr()=0
virtual const VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const =0
virtual BaseCPU * getCpuPtr()=0
virtual RegVal readCCReg(RegIndex reg_idx) const =0
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Event for timing out quiesce instruction.
virtual const VecRegContainer & readVecReg(const RegId ®) const =0
void quiesce()
Quiesce thread context.
virtual EndQuiesceEvent * getQuiesceEvent()=0
virtual void setContextId(ContextID id)=0
virtual const VecPredRegContainer & readVecPredReg(const RegId ®) const =0
virtual RegVal readFloatReg(RegIndex reg_idx) const =0
virtual int cpuId() const =0
uint64_t Tick
Tick count type.
VecPredReg::Container VecPredRegContainer
virtual RegVal readCCRegFlat(RegIndex idx) const =0
virtual void suspend()=0
Set the status to Suspended.
void serialize(const ThreadContext &tc, CheckpointOut &cp)
Thread context serialization helpers.
virtual const VecRegContainer & readVecRegFlat(RegIndex idx) const =0
virtual void setFloatRegFlat(RegIndex idx, RegVal val)=0
virtual void setThreadId(int id)=0
void arrayParamOut(CheckpointOut &cp, const std::string &name, const CircleBuf< T > ¶m)
void reschedule(Event &event, Tick when, bool always=false)
virtual void setCCRegFlat(RegIndex idx, RegVal val)=0
#define SERIALIZE_ARRAY(member, size)
virtual const std::string name() const
#define UNSERIALIZE_ARRAY(member, size)
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
#define SERIALIZE_CONTAINER(member)
std::ostream CheckpointOut
VecReg::Container VecRegContainer
virtual void takeOverFrom(ThreadContext *old_context)=0
virtual void setVecPredRegFlat(RegIndex idx, const VecPredRegContainer &val)=0
static void compare(ThreadContext *one, ThreadContext *two)
function to compare two thread contexts (for debugging)
virtual void copyArchRegs(ThreadContext *tc)=0
virtual int threadId() const =0
virtual RegVal readIntRegFlat(RegIndex idx) const =0
Flat register interfaces.
virtual ContextID contextId() const =0
virtual Status status() const =0
void unserialize(ThreadContext &tc, CheckpointIn &cp)
void arrayParamIn(CheckpointIn &cp, const std::string &name, CircleBuf< T > ¶m)
virtual void setVecRegFlat(RegIndex idx, const VecRegContainer &val)=0
Register ID: describe an architectural register with its class and index.
void quiesceTick(Tick resume)
Quiesce, suspend, and schedule activate at resume.
virtual RegVal readFloatRegFlat(RegIndex idx) const =0
virtual void setIntRegFlat(RegIndex idx, RegVal val)=0
GenericISA::DelaySlotPCState< MachInst > PCState
int ContextID
Globally unique thread context ID.