changeset fc2e234b4404 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=fc2e234b4404
description:
        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.

diffstat:

2 files changed, 9 insertions(+), 20 deletions(-)
src/cpu/inorder/cpu.cc |   14 ++++++--------
src/cpu/o3/cpu.cc      |   15 +++------------

diffs (61 lines):

diff -r f1a9f7f6e7c6 -r fc2e234b4404 src/cpu/inorder/cpu.cc
--- a/src/cpu/inorder/cpu.cc    Wed Apr 15 23:12:00 2009 -0700
+++ b/src/cpu/inorder/cpu.cc    Fri Apr 17 16:54:58 2009 -0700
@@ -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 @@
     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 -r f1a9f7f6e7c6 -r fc2e234b4404 src/cpu/o3/cpu.cc
--- a/src/cpu/o3/cpu.cc Wed Apr 15 23:12:00 2009 -0700
+++ b/src/cpu/o3/cpu.cc Fri Apr 17 16:54:58 2009 -0700
@@ -568,21 +568,12 @@
     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++) {
-#if FULL_SYSTEM
         ThreadContext *src_tc = threadContexts[tid];
-#else
-        ThreadContext *src_tc = thread[tid]->getTC();
+        TheISA::initCPU(src_tc, src_tc->contextId());
+    }
 #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
-    }
 
     // Clear inSyscall.
     for (int i = 0; i < number_of_threads; ++i)
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to