cpu, sim: Return PortProxy &s from all the proxy accessors.
authorGabe Black <gabeblack@google.com>
Thu, 2 May 2019 08:33:31 +0000 (01:33 -0700)
committerGabe Black <gabeblack@google.com>
Thu, 30 May 2019 14:20:03 +0000 (14:20 +0000)
This is a step towards merging the accessors for SE and FS modes.

Change-Id: I76818ab88b97097ac363e243be9cc1911b283090
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18579
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

src/cpu/checker/thread_context.hh
src/cpu/o3/thread_context.hh
src/cpu/o3/thread_context_impl.hh
src/cpu/simple_thread.hh
src/cpu/thread_context.hh
src/cpu/thread_state.cc
src/cpu/thread_state.hh
src/sim/process.cc

index ed8add66244b2a90f124c72c5bb23a0fa983d1fa..46ade24bb73c60f4c8ff90fa0e6ffa37b9e21736 100644 (file)
@@ -146,7 +146,7 @@ class CheckerThreadContext : public ThreadContext
 
     PortProxy &getPhysProxy() override { return actualTC->getPhysProxy(); }
 
-    FSTranslatingPortProxy &
+    PortProxy &
     getVirtProxy() override
     {
         return actualTC->getVirtProxy();
@@ -164,7 +164,7 @@ class CheckerThreadContext : public ThreadContext
         actualTC->connectMemPorts(tc);
     }
 
-    SETranslatingPortProxy &
+    PortProxy &
     getMemProxy() override
     {
         return actualTC->getMemProxy();
index e5f01871bd861f1f672652caddac8e7e27281358..a3698cf2e2022faec7b0907a874bd79f5b0e5cf5 100644 (file)
@@ -132,7 +132,7 @@ class O3ThreadContext : public ThreadContext
 
     PortProxy &getPhysProxy() override { return thread->getPhysProxy(); }
 
-    FSTranslatingPortProxy &getVirtProxy() override;
+    PortProxy &getVirtProxy() override;
 
     void
     initMemProxies(ThreadContext *tc) override
@@ -140,7 +140,7 @@ class O3ThreadContext : public ThreadContext
         thread->initMemProxies(tc);
     }
 
-    SETranslatingPortProxy &
+    PortProxy &
     getMemProxy() override
     {
         return thread->getMemProxy();
index 58dee98145a3fb8c9bddf1cec214557b6546f84b..e05721b99833d749abb8859b976ad8f5f0270acb 100644 (file)
@@ -54,7 +54,7 @@
 #include "debug/O3CPU.hh"
 
 template <class Impl>
-FSTranslatingPortProxy&
+PortProxy&
 O3ThreadContext<Impl>::getVirtProxy()
 {
     return thread->getVirtProxy();
index 8b5e49a3e7d3f6ba7071b83261948ed7895ca531..991c6bd8020364824f486dc8bced1376b74e2618 100644 (file)
@@ -216,18 +216,14 @@ class SimpleThread : public ThreadState, public ThreadContext
     }
 
     PortProxy &getPhysProxy() override { return ThreadState::getPhysProxy(); }
-    FSTranslatingPortProxy &
-    getVirtProxy() override
-    {
-        return ThreadState::getVirtProxy();
-    }
+    PortProxy &getVirtProxy() override { return ThreadState::getVirtProxy(); }
 
     void initMemProxies(ThreadContext *tc) override
     {
         ThreadState::initMemProxies(tc);
     }
 
-    SETranslatingPortProxy &
+    PortProxy &
     getMemProxy() override
     {
         return ThreadState::getMemProxy();
index bdf5a008662d00345d315b4109e8c99518ae8958..f8b69d096eebbeb4b00432480a129609006aa501 100644 (file)
@@ -65,8 +65,6 @@ class BaseTLB;
 class CheckerCPU;
 class Checkpoint;
 class EndQuiesceEvent;
-class SETranslatingPortProxy;
-class FSTranslatingPortProxy;
 class PortProxy;
 class Process;
 class System;
@@ -152,7 +150,7 @@ class ThreadContext
 
     virtual PortProxy &getPhysProxy() = 0;
 
-    virtual FSTranslatingPortProxy &getVirtProxy() = 0;
+    virtual PortProxy &getVirtProxy() = 0;
 
     /**
      * Initialise the physical and virtual port proxies and tie them to
@@ -162,7 +160,7 @@ class ThreadContext
      */
     virtual void initMemProxies(ThreadContext *tc) = 0;
 
-    virtual SETranslatingPortProxy &getMemProxy() = 0;
+    virtual PortProxy &getMemProxy() = 0;
 
     virtual Process *getProcessPtr() = 0;
 
index acb297113fe034c90305c9992738eea495bc8c74..c9fc56487346e61677e98dc8be4f061a39f0c9ca 100644 (file)
@@ -133,7 +133,7 @@ ThreadState::getPhysProxy()
     return *physProxy;
 }
 
-FSTranslatingPortProxy &
+PortProxy &
 ThreadState::getVirtProxy()
 {
     assert(FullSystem);
@@ -141,7 +141,7 @@ ThreadState::getVirtProxy()
     return *virtProxy;
 }
 
-SETranslatingPortProxy &
+PortProxy &
 ThreadState::getMemProxy()
 {
     assert(!FullSystem);
index 2006339221242f543646b858044819dcb3456a14..e00c86f55d083cb2e7e331124956ec476a991fe0 100644 (file)
@@ -47,6 +47,9 @@ namespace Kernel {
 
 class Checkpoint;
 
+class FSTranslatingPortProxy;
+class SETranslatingPortProxy;
+
 /**
  *  Struct for holding general thread state that is needed across CPU
  *  models.  This includes things such as pointers to the process,
@@ -100,7 +103,7 @@ struct ThreadState : public Serializable {
 
     PortProxy &getPhysProxy();
 
-    FSTranslatingPortProxy &getVirtProxy();
+    PortProxy &getVirtProxy();
 
     Process *getProcessPtr() { return process; }
 
@@ -119,7 +122,7 @@ struct ThreadState : public Serializable {
         }
     }
 
-    SETranslatingPortProxy &getMemProxy();
+    PortProxy &getMemProxy();
 
     /** Reads the number of instructions functionally executed and
      * committed.
index f647467b8bb985e9bfb0b796e1f3f807ac491bfb..81f2cd6aa98fee29443221766cdb5e12ac2bc8d8 100644 (file)
@@ -161,7 +161,9 @@ Process::clone(ThreadContext *otc, ThreadContext *ntc,
          */
         delete np->pTable;
         np->pTable = pTable;
-        ntc->getMemProxy().setPageTable(np->pTable);
+        auto &proxy = dynamic_cast<SETranslatingPortProxy &>(
+                ntc->getMemProxy());
+        proxy.setPageTable(np->pTable);
 
         np->memState = memState;
     } else {