cpu, sim: Return PortProxy &s from all the proxy accessors.
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>
diff --git a/src/cpu/checker/thread_context.hh b/src/cpu/checker/thread_context.hh
index ed8add6..46ade24 100644
--- a/src/cpu/checker/thread_context.hh
+++ b/src/cpu/checker/thread_context.hh
@@ -146,7 +146,7 @@
PortProxy &getPhysProxy() override { return actualTC->getPhysProxy(); }
- FSTranslatingPortProxy &
+ PortProxy &
getVirtProxy() override
{
return actualTC->getVirtProxy();
@@ -164,7 +164,7 @@
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 e5f0187..a3698cf 100644
--- a/src/cpu/o3/thread_context.hh
+++ b/src/cpu/o3/thread_context.hh
@@ -132,7 +132,7 @@
PortProxy &getPhysProxy() override { return thread->getPhysProxy(); }
- FSTranslatingPortProxy &getVirtProxy() override;
+ PortProxy &getVirtProxy() override;
void
initMemProxies(ThreadContext *tc) override
@@ -140,7 +140,7 @@
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 58dee98..e05721b 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 <class Impl>
-FSTranslatingPortProxy&
+PortProxy&
O3ThreadContext<Impl>::getVirtProxy()
{
return thread->getVirtProxy();
diff --git a/src/cpu/simple_thread.hh b/src/cpu/simple_thread.hh
index 8b5e49a..991c6bd 100644
--- a/src/cpu/simple_thread.hh
+++ b/src/cpu/simple_thread.hh
@@ -216,18 +216,14 @@
}
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 bdf5a00..f8b69d0 100644
--- a/src/cpu/thread_context.hh
+++ b/src/cpu/thread_context.hh
@@ -65,8 +65,6 @@
class CheckerCPU;
class Checkpoint;
class EndQuiesceEvent;
-class SETranslatingPortProxy;
-class FSTranslatingPortProxy;
class PortProxy;
class Process;
class System;
@@ -152,7 +150,7 @@
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 @@
*/
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 acb2971..c9fc564 100644
--- a/src/cpu/thread_state.cc
+++ b/src/cpu/thread_state.cc
@@ -133,7 +133,7 @@
return *physProxy;
}
-FSTranslatingPortProxy &
+PortProxy &
ThreadState::getVirtProxy()
{
assert(FullSystem);
@@ -141,7 +141,7 @@
return *virtProxy;
}
-SETranslatingPortProxy &
+PortProxy &
ThreadState::getMemProxy()
{
assert(!FullSystem);
diff --git a/src/cpu/thread_state.hh b/src/cpu/thread_state.hh
index 2006339..e00c86f 100644
--- a/src/cpu/thread_state.hh
+++ b/src/cpu/thread_state.hh
@@ -47,6 +47,9 @@
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 @@
PortProxy &getPhysProxy();
- FSTranslatingPortProxy &getVirtProxy();
+ PortProxy &getVirtProxy();
Process *getProcessPtr() { return process; }
@@ -119,7 +122,7 @@
}
}
- 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 f647467..81f2cd6 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -161,7 +161,9 @@
*/
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 {