Set progress_interval in terms of CPU cycles.
[gem5.git] / src / cpu / simple_thread.cc
index d4e5f82306942a29f4bc737f7979eab51a564aee..13d0e2e291ace750531303b190244444257eb617 100644 (file)
 #include "cpu/thread_context.hh"
 
 #if FULL_SYSTEM
+#include "arch/kernel_stats.hh"
 #include "base/callback.hh"
 #include "base/cprintf.hh"
 #include "base/output.hh"
 #include "base/trace.hh"
 #include "cpu/profile.hh"
 #include "cpu/quiesce_event.hh"
-#include "kern/kernel_stats.hh"
 #include "sim/serialize.hh"
 #include "sim/sim_exit.hh"
 #include "arch/stacktrace.hh"
@@ -87,22 +87,10 @@ SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys,
     profilePC = 3;
 
     if (use_kernel_stats) {
-        kernelStats = new Kernel::Statistics(system);
+        kernelStats = new TheISA::Kernel::Statistics(system);
     } else {
         kernelStats = NULL;
     }
-    Port *mem_port;
-    physPort = new FunctionalPort(csprintf("%s-%d-funcport",
-                                           cpu->name(), tid));
-    mem_port = system->physmem->getPort("functional");
-    mem_port->setPeer(physPort);
-    physPort->setPeer(mem_port);
-
-    virtPort = new VirtualPort(csprintf("%s-%d-vport",
-                                        cpu->name(), tid));
-    mem_port = system->physmem->getPort("functional");
-    mem_port->setPeer(virtPort);
-    virtPort->setPeer(mem_port);
 }
 #else
 SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num,
@@ -129,6 +117,10 @@ SimpleThread::SimpleThread()
 
 SimpleThread::~SimpleThread()
 {
+#if FULL_SYSTEM
+    delete physPort;
+    delete virtPort;
+#endif
     delete tc;
 }
 
@@ -154,7 +146,7 @@ SimpleThread::takeOverFrom(ThreadContext *oldContext)
         quiesceEvent->tc = tc;
     }
 
-    Kernel::Statistics *stats = oldContext->getKernelStats();
+    TheISA::Kernel::Statistics *stats = oldContext->getKernelStats();
     if (stats) {
         kernelStats = stats;
     }
@@ -175,7 +167,7 @@ SimpleThread::copyTC(ThreadContext *context)
     if (quiesce) {
         quiesceEvent = quiesce;
     }
-    Kernel::Statistics *stats = context->getKernelStats();
+    TheISA::Kernel::Statistics *stats = context->getKernelStats();
     if (stats) {
         kernelStats = stats;
     }
@@ -304,13 +296,8 @@ SimpleThread::getVirtPort(ThreadContext *src_tc)
     if (!src_tc)
         return virtPort;
 
-    VirtualPort *vp;
-    Port *mem_port;
-
-    vp = new VirtualPort("tc-vport", src_tc);
-    mem_port = system->physmem->getPort("functional");
-    mem_port->setPeer(vp);
-    vp->setPeer(mem_port);
+    VirtualPort *vp = new VirtualPort("tc-vport", src_tc);
+    connectToMemFunc(vp);
     return vp;
 }
 
@@ -323,25 +310,5 @@ SimpleThread::delVirtPort(VirtualPort *vp)
     }
 }
 
-#else
-TranslatingPort *
-SimpleThread::getMemPort()
-{
-    if (port != NULL)
-        return port;
-
-    /* Use this port to for syscall emulation writes to memory. */
-    Port *dcache_port;
-    port = new TranslatingPort(csprintf("%s-%d-funcport",
-                                        cpu->name(), tid),
-                               process->pTable, false);
-    dcache_port = cpu->getPort("dcache_port");
-    assert(dcache_port != NULL);
-    dcache_port = dcache_port->getPeer();
-//    mem_port->setPeer(port);
-    port->setPeer(dcache_port);
-    return port;
-}
-
 #endif