diff --git a/src/cpu/checker/thread_context.hh b/src/cpu/checker/thread_context.hh index ed8add6624..46ade24bb7 100644 --- a/src/cpu/checker/thread_context.hh +++ b/src/cpu/checker/thread_context.hh @@ -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(); diff --git a/src/cpu/o3/thread_context.hh b/src/cpu/o3/thread_context.hh index e5f01871bd..a3698cf2e2 100644 --- a/src/cpu/o3/thread_context.hh +++ b/src/cpu/o3/thread_context.hh @@ -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(); diff --git a/src/cpu/o3/thread_context_impl.hh b/src/cpu/o3/thread_context_impl.hh index 58dee98145..e05721b998 100644 --- a/src/cpu/o3/thread_context_impl.hh +++ b/src/cpu/o3/thread_context_impl.hh @@ -54,7 +54,7 @@ #include "debug/O3CPU.hh" template -FSTranslatingPortProxy& +PortProxy& O3ThreadContext::getVirtProxy() { return thread->getVirtProxy(); diff --git a/src/cpu/simple_thread.hh b/src/cpu/simple_thread.hh index 8b5e49a3e7..991c6bd802 100644 --- a/src/cpu/simple_thread.hh +++ b/src/cpu/simple_thread.hh @@ -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(); diff --git a/src/cpu/thread_context.hh b/src/cpu/thread_context.hh index bdf5a00866..f8b69d096e 100644 --- a/src/cpu/thread_context.hh +++ b/src/cpu/thread_context.hh @@ -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; diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index acb297113f..c9fc564873 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -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); diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh index 2006339221..e00c86f55d 100644 --- a/src/cpu/thread_state.hh +++ b/src/cpu/thread_state.hh @@ -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. diff --git a/src/sim/process.cc b/src/sim/process.cc index f647467b8b..81f2cd6aa9 100644 --- a/src/sim/process.cc +++ b/src/sim/process.cc @@ -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( + ntc->getMemProxy()); + proxy.setPageTable(np->pTable); np->memState = memState; } else {