ThreadState: initialize status to Halted in constructor.
This provides a common initial status for all threads independent of CPU model (unlike the prior situation where CPUs initialized threads to inconsistent states). This mostly matters for SE mode; in FS mode, ISA-specific startupCPU() methods generally handle boot-time initialization of thread contexts (since the right thing to do is ISA-dependent).
This commit is contained in:
parent
48d4ca522a
commit
7617dcf736
|
@ -75,7 +75,6 @@ CheckerCPU::CheckerCPU(Params *p)
|
|||
thread = new SimpleThread(this, /* thread_num */ 0, process,
|
||||
/* asid */ 0);
|
||||
|
||||
thread->setStatus(ThreadContext::Suspended);
|
||||
tc = thread->getTC();
|
||||
threadContexts.push_back(tc);
|
||||
#endif
|
||||
|
@ -95,7 +94,6 @@ CheckerCPU::setSystem(System *system)
|
|||
|
||||
thread = new SimpleThread(this, 0, systemPtr, itb, dtb, false);
|
||||
|
||||
thread->setStatus(ThreadContext::Suspended);
|
||||
tc = thread->getTC();
|
||||
threadContexts.push_back(tc);
|
||||
delete thread->kernelStats;
|
||||
|
|
|
@ -193,10 +193,6 @@ InOrderCPU::InOrderCPU(Params *params)
|
|||
i, this->thread[i]);
|
||||
this->thread[i] = new Thread(this, i, params->workload[i],
|
||||
i);
|
||||
|
||||
// Start thread's off in "Suspended" status
|
||||
this->thread[i]->setStatus(ThreadContext::Suspended);
|
||||
|
||||
} else {
|
||||
//Allocate Empty thread so M5 can use later
|
||||
//when scheduling threads to CPU
|
||||
|
|
|
@ -356,7 +356,6 @@ FullO3CPU<Impl>::FullO3CPU(DerivO3CPUParams *params)
|
|||
// SMT is not supported in FS mode yet.
|
||||
assert(this->numThreads == 1);
|
||||
this->thread[i] = new Thread(this, 0);
|
||||
this->thread[i]->setStatus(ThreadContext::Suspended);
|
||||
#else
|
||||
if (i < params->workload.size()) {
|
||||
DPRINTF(O3CPU, "Workload[%i] process is %#x",
|
||||
|
@ -365,8 +364,6 @@ FullO3CPU<Impl>::FullO3CPU(DerivO3CPUParams *params)
|
|||
(typename Impl::O3CPU *)(this),
|
||||
i, params->workload[i], i);
|
||||
|
||||
this->thread[i]->setStatus(ThreadContext::Suspended);
|
||||
|
||||
//usedTids[i] = true;
|
||||
//threadMap[i] = i;
|
||||
} else {
|
||||
|
|
|
@ -131,7 +131,6 @@ OzoneCPU<Impl>::OzoneCPU(Params *p)
|
|||
|
||||
thread.inSyscall = false;
|
||||
|
||||
thread.setStatus(ThreadContext::Suspended);
|
||||
itb = p->itb;
|
||||
dtb = p->dtb;
|
||||
#if FULL_SYSTEM
|
||||
|
|
|
@ -44,20 +44,20 @@
|
|||
|
||||
#if FULL_SYSTEM
|
||||
ThreadState::ThreadState(BaseCPU *cpu, int _tid)
|
||||
: baseCpu(cpu), _threadId(_tid), lastActivate(0), lastSuspend(0),
|
||||
#else
|
||||
ThreadState::ThreadState(BaseCPU *cpu, int _tid,
|
||||
Process *_process, short _asid)
|
||||
#endif
|
||||
: numInst(0), numLoad(0), _status(ThreadContext::Halted),
|
||||
baseCpu(cpu), _threadId(_tid), lastActivate(0), lastSuspend(0),
|
||||
#if FULL_SYSTEM
|
||||
profile(NULL), profileNode(NULL), profilePC(0), quiesceEvent(NULL),
|
||||
kernelStats(NULL), physPort(NULL), virtPort(NULL),
|
||||
microPC(0), nextMicroPC(1), funcExeInst(0), storeCondFailures(0)
|
||||
#else
|
||||
ThreadState::ThreadState(BaseCPU *cpu, int _tid, Process *_process,
|
||||
short _asid)
|
||||
: baseCpu(cpu), _threadId(_tid), lastActivate(0), lastSuspend(0),
|
||||
port(NULL), process(_process), asid(_asid),
|
||||
microPC(0), nextMicroPC(1), funcExeInst(0), storeCondFailures(0)
|
||||
#endif
|
||||
microPC(0), nextMicroPC(1), funcExeInst(0), storeCondFailures(0)
|
||||
{
|
||||
numInst = 0;
|
||||
numLoad = 0;
|
||||
}
|
||||
|
||||
ThreadState::~ThreadState()
|
||||
|
|
|
@ -68,8 +68,7 @@ struct ThreadState {
|
|||
#if FULL_SYSTEM
|
||||
ThreadState(BaseCPU *cpu, int _tid);
|
||||
#else
|
||||
ThreadState(BaseCPU *cpu, int _tid, Process *_process,
|
||||
short _asid);
|
||||
ThreadState(BaseCPU *cpu, int _tid, Process *_process, short _asid);
|
||||
#endif
|
||||
|
||||
~ThreadState();
|
||||
|
|
Loading…
Reference in a new issue