For now, halt context is the same as deallocating.
authorKorey Sewell <ksewell@umich.edu>
Fri, 14 Jul 2006 17:06:37 +0000 (13:06 -0400)
committerKorey Sewell <ksewell@umich.edu>
Fri, 14 Jul 2006 17:06:37 +0000 (13:06 -0400)
suspend context will now take the thread off the activeThread list.

src/arch/mips/isa_traits.cc:
    add in copy MiscRegs unimplemented function

--HG--
extra : convert_revision : 3ed5320b3786f84d4bb242e3a32b6f415339c3ba

src/arch/mips/isa_traits.cc
src/cpu/o3/cpu.cc

index 85acc4e8cd29b163bf89fd72b7ae11b31ad61777..a8b41270ece4a004a11cd18920c0012e8b00a43f 100644 (file)
@@ -45,6 +45,12 @@ MipsISA::copyRegs(ThreadContext *src, ThreadContext *dest)
     panic("Copy Regs Not Implemented Yet\n");
 }
 
+void
+MipsISA::copyMiscRegs(ThreadContext *src, ThreadContext *dest)
+{
+    panic("Copy Misc. Regs Not Implemented Yet\n");
+}
+
 void
 MipsISA::MiscRegFile::copyMiscRegs(ThreadContext *tc)
 {
index 6e9b425c0e05dbb2ce1ced36933c5b43c217a122..349434c9433bc2fe3797a449e62b313f983823fe 100644 (file)
@@ -577,39 +577,19 @@ void
 FullO3CPU<Impl>::suspendContext(int tid)
 {
     DPRINTF(O3CPU,"[tid: %i]: Suspending Thread Context.\n", tid);
-    unscheduleTickEvent();
+    deactivateThread();
+    if (activeThreads.size() == 0)
+        unscheduleTickEvent();
     _status = Idle;
-/*
-    //Remove From Active List, if Active
-    list<unsigned>::iterator isActive = find(
-        activeThreads.begin(), activeThreads.end(), tid);
-
-    if (isActive != activeThreads.end()) {
-        DPRINTF(O3CPU,"[tid:%i]: Removing from active threads list\n",
-                tid);
-        activeThreads.erase(isActive);
-    }
-*/
 }
 
 template <class Impl>
 void
 FullO3CPU<Impl>::haltContext(int tid)
 {
-    DPRINTF(O3CPU,"[tid:%i]: Halting Thread Context", tid);
-/*
-    //Remove From Active List, if Active
-    list<unsigned>::iterator isActive = find(
-        activeThreads.begin(), activeThreads.end(), tid);
-
-    if (isActive != activeThreads.end()) {
-        DPRINTF(O3CPU,"[tid:%i]: Removing from active threads list\n",
-                tid);
-        activeThreads.erase(isActive);
-
-        removeThread(tid);
-    }
-*/
+    //For now, this is the same as deallocate
+    DPRINTF(O3CPU,"[tid:%i]: Halt Context called. Deallocating", tid);
+    deallocateContext(tid, 1);
 }
 
 template <class Impl>