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.
*
*/
+#include "config/full_system.hh"
+
#include "arch/utility.hh"
#include "cpu/exetrace.hh"
#include "cpu/activity.hh"
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)
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)