summaryrefslogtreecommitdiff
path: root/src/sim
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2017-12-22 16:14:03 -0800
committerGabe Black <gabeblack@google.com>2018-01-11 06:29:58 +0000
commit54a9d471faab2b4ab3ef26932957b2e0d496e84e (patch)
tree2fc64af43a35ca47cb2bc06461ff76f8092e1262 /src/sim
parentc2f3f6dbff9b29730da17269397f918742559179 (diff)
downloadgem5-54a9d471faab2b4ab3ef26932957b2e0d496e84e.tar.xz
arch,mem: Move page table construction into the arch classes.
This gets rid of an awkward NoArchPageTable class, and also gives the arch a place to inject ISA specific parameters (specifically page size) without having to have TheISA:: in the generic version of these types. Change-Id: I1412f303460d5c43dafdb9b3cd07af81c908a441 Reviewed-on: https://gem5-review.googlesource.com/6981 Reviewed-by: Alexandru Duțu <alexandru.dutu@amd.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/process.cc8
-rw-r--r--src/sim/process.hh3
2 files changed, 5 insertions, 6 deletions
diff --git a/src/sim/process.cc b/src/sim/process.cc
index ee90667ff..77d7903a7 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -101,14 +101,12 @@
using namespace std;
using namespace TheISA;
-Process::Process(ProcessParams * params, ObjectFile * obj_file)
+Process::Process(ProcessParams *params, PageTableBase *pTable,
+ ObjectFile *obj_file)
: SimObject(params), system(params->system),
useArchPT(params->useArchPT),
kvmInSE(params->kvmInSE),
- pTable(useArchPT ?
- static_cast<PageTableBase *>(new ArchPageTable(name(), params->pid,
- system)) :
- static_cast<PageTableBase *>(new FuncPageTable(name(), params->pid))),
+ pTable(pTable),
initVirtMem(system->getSystemPort(), this,
SETranslatingPortProxy::Always),
objFile(obj_file),
diff --git a/src/sim/process.hh b/src/sim/process.hh
index e4a52e3de..6d465aca9 100644
--- a/src/sim/process.hh
+++ b/src/sim/process.hh
@@ -63,7 +63,8 @@ class ThreadContext;
class Process : public SimObject
{
public:
- Process(ProcessParams *params, ObjectFile *obj_file);
+ Process(ProcessParams *params, PageTableBase *pTable,
+ ObjectFile *obj_file);
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;