Merge zizzer.eecs.umich.edu:/z/m5/Bitkeeper/newmem
authorKorey Sewell <ksewell@umich.edu>
Fri, 7 Jul 2006 23:02:12 +0000 (19:02 -0400)
committerKorey Sewell <ksewell@umich.edu>
Fri, 7 Jul 2006 23:02:12 +0000 (19:02 -0400)
into  zizzer.eecs.umich.edu:/.automount/zooks/y/ksewell/research/m5-sim/newmem-o3

--HG--
extra : convert_revision : 9098d989832e2a5818b80771e3c02170c5c8cd5b

1  2 
src/cpu/o3/commit_impl.hh
src/cpu/o3/cpu.cc
src/cpu/o3/cpu.hh

Simple merge
index a9a1a7c9b2ed95a4ab622f43ea2437832e590cac,c46276d5a3d97bab282e95069abaee6d3b23a816..62d58c71b85670510b3761cf933b20aa56b5f27b
@@@ -618,149 -750,6 +763,47 @@@ FullO3CPU<Impl>::activateWhenReady(int 
      }
  }
  
- template <class Impl>
- void
- FullO3CPU<Impl>::activateThread(unsigned int tid)
- {
-     list<unsigned>::iterator isActive = find(
-         activeThreads.begin(), activeThreads.end(), tid);
-     if (isActive == activeThreads.end()) {
-         DPRINTF(O3CPU, "[tid:%i]: Adding to active threads list\n",
-                 tid);
-         activeThreads.push_back(tid);
-     }
- }
- template <class Impl>
- void
- FullO3CPU<Impl>::activateContext(int tid, int delay)
- {
-     // Needs to set each stage to running as well.
-     if (delay){
-         DPRINTF(O3CPU, "[tid:%i]: Scheduling thread context to activate "
-                 "on cycle %d\n", tid, curTick + cycles(delay));
-         scheduleActivateThreadEvent(tid, delay);
-     } else {
-         activateThread(tid);
-     }
-     if(lastActivatedCycle < curTick) {
-         scheduleTickEvent(delay);
-         // Be sure to signal that there's some activity so the CPU doesn't
-         // deschedule itself.
-         activityRec.activity();
-         fetch.wakeFromQuiesce();
-         lastActivatedCycle = curTick;
-         _status = Running;
-     }
- }
- template <class Impl>
- void
- FullO3CPU<Impl>::suspendContext(int tid)
- {
-     DPRINTF(O3CPU,"[tid: %i]: Suspending Thread Context.\n", tid);
-     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>::deallocateContext(int tid)
- {
-     DPRINTF(O3CPU,"[tid:%i]: Deallocating Thread Context", tid);
-     //Remove From Active List, if Active
-     list<unsigned>::iterator thread_it =
-         find(activeThreads.begin(), activeThreads.end(), tid);
-     if (thread_it != activeThreads.end()) {
-         DPRINTF(O3CPU,"[tid:%i]: Removing from active threads list\n",
-                 tid);
-         activeThreads.erase(thread_it);
-         removeThread(tid);
-     }
- }
- 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);
-     }
- */
- }
 +template <class Impl>
 +void
 +FullO3CPU<Impl>::serialize(std::ostream &os)
 +{
 +    SERIALIZE_ENUM(_status);
 +    BaseCPU::serialize(os);
 +    nameOut(os, csprintf("%s.tickEvent", name()));
 +    tickEvent.serialize(os);
 +
 +    // Use SimpleThread's ability to checkpoint to make it easier to
 +    // write out the registers.  Also make this static so it doesn't
 +    // get instantiated multiple times (causes a panic in statistics).
 +    static SimpleThread temp;
 +
 +    for (int i = 0; i < thread.size(); i++) {
 +        nameOut(os, csprintf("%s.xc.%i", name(), i));
 +        temp.copyTC(thread[i]->getTC());
 +        temp.serialize(os);
 +    }
 +}
 +
 +template <class Impl>
 +void
 +FullO3CPU<Impl>::unserialize(Checkpoint *cp, const std::string &section)
 +{
 +    UNSERIALIZE_ENUM(_status);
 +    BaseCPU::unserialize(cp, section);
 +    tickEvent.unserialize(cp, csprintf("%s.tickEvent", section));
 +
 +    // Use SimpleThread's ability to checkpoint to make it easier to
 +    // read in the registers.  Also make this static so it doesn't
 +    // get instantiated multiple times (causes a panic in statistics).
 +    static SimpleThread temp;
 +
 +    for (int i = 0; i < thread.size(); i++) {
 +        temp.copyTC(thread[i]->getTC());
 +        temp.unserialize(cp, csprintf("%s.xc.%i", section, i));
 +        thread[i]->getTC()->copyArchRegs(temp.getTC());
 +    }
 +}
 +
  template <class Impl>
  bool
  FullO3CPU<Impl>::drain(Event *drain_event)
Simple merge