diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2009-04-15 13:18:24 -0700 |
---|---|---|
committer | Steve Reinhardt <steve.reinhardt@amd.com> | 2009-04-15 13:18:24 -0700 |
commit | 7617dcf736b5b96d44aedccd51550be037e7b937 (patch) | |
tree | c45e67e334b961f1e9df6aecfef0a2061c393162 | |
parent | 48d4ca522a2f771188d93a2d5ff54cf505a8ca41 (diff) | |
download | gem5-7617dcf736b5b96d44aedccd51550be037e7b937.tar.xz |
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).
-rw-r--r-- | src/cpu/checker/cpu.cc | 2 | ||||
-rw-r--r-- | src/cpu/inorder/cpu.cc | 4 | ||||
-rw-r--r-- | src/cpu/o3/cpu.cc | 3 | ||||
-rw-r--r-- | src/cpu/ozone/cpu_impl.hh | 1 | ||||
-rw-r--r-- | src/cpu/thread_state.cc | 16 | ||||
-rw-r--r-- | src/cpu/thread_state.hh | 3 |
6 files changed, 9 insertions, 20 deletions
diff --git a/src/cpu/checker/cpu.cc b/src/cpu/checker/cpu.cc index 14777bc12..1c36ad22d 100644 --- a/src/cpu/checker/cpu.cc +++ b/src/cpu/checker/cpu.cc @@ -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; diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc index 70877aae4..9e3843e20 100644 --- a/src/cpu/inorder/cpu.cc +++ b/src/cpu/inorder/cpu.cc @@ -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 diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc index 1d7fb97c0..6a39f07be 100644 --- a/src/cpu/o3/cpu.cc +++ b/src/cpu/o3/cpu.cc @@ -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 { diff --git a/src/cpu/ozone/cpu_impl.hh b/src/cpu/ozone/cpu_impl.hh index 060ea6d78..ba1205010 100644 --- a/src/cpu/ozone/cpu_impl.hh +++ b/src/cpu/ozone/cpu_impl.hh @@ -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 diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index b0e719ddf..09af2725a 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -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() diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh index 99f0c2a87..dbae85998 100644 --- a/src/cpu/thread_state.hh +++ b/src/cpu/thread_state.hh @@ -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(); |