From 14808ecac9de9fe04eb58a4ca9393e3b4f0a60ae Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Fri, 17 Apr 2009 16:54:58 -0700 Subject: [PATCH] o3, inorder: fix FS bug due to initializing ThreadState to Halted. For some reason o3 FS init() only called initCPU if the thread state was Suspended, which was no longer the case. There's no apparent reason to check, so I whacked the test completely rather than changing the check to Halted. The inorder init() was also updated to be symmetric, though the previous code was just a fancy no-op. --- src/cpu/inorder/cpu.cc | 14 ++++++-------- src/cpu/o3/cpu.cc | 13 ++----------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc index 9e3843e20..0b38f39bc 100644 --- a/src/cpu/inorder/cpu.cc +++ b/src/cpu/inorder/cpu.cc @@ -29,6 +29,8 @@ * */ +#include "config/full_system.hh" + #include "arch/utility.hh" #include "cpu/exetrace.hh" #include "cpu/activity.hh" @@ -420,16 +422,12 @@ InOrderCPU::init() for (int i = 0; i < number_of_threads; ++i) thread[i]->inSyscall = true; +#if FULL_SYSTEM for (int tid=0; tid < number_of_threads; tid++) { - - ThreadContext *src_tc = thread[tid]->getTC(); - - // Threads start in the Suspended State - if (src_tc->status() != ThreadContext::Suspended) { - continue; - } - + ThreadContext *src_tc = threadContexts[tid]; + TheISA::initCPU(src_tc, src_tc->contextId()); } +#endif // Clear inSyscall. for (int i = 0; i < number_of_threads; ++i) diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc index 83a012164..038e5daaa 100644 --- a/src/cpu/o3/cpu.cc +++ b/src/cpu/o3/cpu.cc @@ -568,21 +568,12 @@ FullO3CPU::init() for (int i = 0; i < number_of_threads; ++i) thread[i]->inSyscall = true; - for (int tid=0; tid < number_of_threads; tid++) { #if FULL_SYSTEM + for (int tid=0; tid < number_of_threads; tid++) { ThreadContext *src_tc = threadContexts[tid]; -#else - ThreadContext *src_tc = thread[tid]->getTC(); -#endif - // Threads start in the Suspended State - if (src_tc->status() != ThreadContext::Suspended) { - continue; - } - -#if FULL_SYSTEM TheISA::initCPU(src_tc, src_tc->contextId()); -#endif } +#endif // Clear inSyscall. for (int i = 0; i < number_of_threads; ++i) -- 2.30.2