Checker: Fix checker CPU ports
authorAndreas Hansson <andreas.hansson@arm.com>
Tue, 28 Aug 2012 18:30:24 +0000 (14:30 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Tue, 28 Aug 2012 18:30:24 +0000 (14:30 -0400)
This patch updates how the checker CPU handles the ports such that the
regressions will once again run without causing a panic.

A minor amount of tidying up was also done as part of this patch.

src/cpu/checker/cpu.cc
src/cpu/checker/cpu.hh

index 73205dc351de56980a452872100ce5ad5968e8dc..3c1690ac3cbb2f6098d3f89bf79e9e1573c9bc00 100644 (file)
@@ -65,7 +65,8 @@ CheckerCPU::init()
 }
 
 CheckerCPU::CheckerCPU(Params *p)
-    : BaseCPU(p, true), thread(NULL), tc(NULL)
+    : BaseCPU(p, true), systemPtr(NULL), icachePort(NULL), dcachePort(NULL),
+      tc(NULL), thread(NULL)
 {
     memReq = NULL;
     curStaticInst = NULL;
@@ -83,9 +84,7 @@ CheckerCPU::CheckerCPU(Params *p)
     warnOnlyOnLoadError = p->warnOnlyOnLoadError;
     itb = p->itb;
     dtb = p->dtb;
-    systemPtr = NULL;
     workload = p->workload;
-    thread = NULL;
 
     updateOnError = true;
 }
index 72dc2ce3e0de543ed8c72b48e492c8229f7c929a..6bd2b7e31cc338495735035388703c3b30d2f81c 100644 (file)
@@ -98,42 +98,40 @@ class CheckerCPU : public BaseCPU
   public:
     virtual void init();
 
-  public:
     typedef CheckerCPUParams Params;
-    const Params *params() const
-    { return reinterpret_cast<const Params *>(_params); }
     CheckerCPU(Params *p);
     virtual ~CheckerCPU();
 
-    std::vector<Process*> workload;
-
     void setSystem(System *system);
 
-    System *systemPtr;
-
     void setIcachePort(CpuPort *icache_port);
 
-    CpuPort *icachePort;
-
     void setDcachePort(CpuPort *dcache_port);
 
-    CpuPort *dcachePort;
-
     CpuPort &getDataPort()
     {
-        panic("Not supported on checker!");
+        // the checker does not have ports on its own so return the
+        // data port of the actual CPU core
+        assert(dcachePort);
         return *dcachePort;
     }
 
     CpuPort &getInstPort()
     {
-        panic("Not supported on checker!");
+        // the checker does not have ports on its own so return the
+        // data port of the actual CPU core
+        assert(icachePort);
         return *icachePort;
     }
 
-  public:
-    // Primary thread being run.
-    SimpleThread *thread;
+  protected:
+
+    std::vector<Process*> workload;
+
+    System *systemPtr;
+
+    CpuPort *icachePort;
+    CpuPort *dcachePort;
 
     ThreadContext *tc;
 
@@ -167,6 +165,11 @@ class CheckerCPU : public BaseCPU
 
     std::queue<int> miscRegIdxs;
 
+  public:
+
+    // Primary thread being run.
+    SimpleThread *thread;
+
     TheISA::TLB* getITBPtr() { return itb; }
     TheISA::TLB* getDTBPtr() { return dtb; }