summaryrefslogtreecommitdiff
path: root/src/sim/process.cc
diff options
context:
space:
mode:
authorAlexandru <alexandru.dutu@amd.com>2014-04-01 12:18:12 -0500
committerAlexandru <alexandru.dutu@amd.com>2014-04-01 12:18:12 -0500
commit26ac28dec288e4fd96d999267ec7cafad4d58c5a (patch)
tree937c3fc79a1d4622215c0e23ac6ae6e5945aab68 /src/sim/process.cc
parent6dc90da08f5e743111ab9ae2623d5c0dad808d29 (diff)
downloadgem5-26ac28dec288e4fd96d999267ec7cafad4d58c5a.tar.xz
mem: adding a multi-level page table class
This patch defines a multi-level page table class that stores the page table in system memory, consistent with ISA specifications. In this way, cpu models that use the actual hardware to execute (e.g. KvmCPU), are able to traverse the page table.
Diffstat (limited to 'src/sim/process.cc')
-rw-r--r--src/sim/process.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/sim/process.cc b/src/sim/process.cc
index ccaac2096..d9f9a0fe6 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -1,4 +1,5 @@
/*
+ * Copyright (c) 2014 Advanced Micro Devices, Inc.
* Copyright (c) 2012 ARM Limited
* All rights reserved
*
@@ -55,6 +56,7 @@
#include "config/the_isa.hh"
#include "cpu/thread_context.hh"
#include "mem/page_table.hh"
+#include "mem/multi_level_page_table.hh"
#include "mem/se_translating_port_proxy.hh"
#include "params/LiveProcess.hh"
#include "params/Process.hh"
@@ -104,7 +106,7 @@ Process::Process(ProcessParams * params)
: SimObject(params), system(params->system),
max_stack_size(params->max_stack_size),
M5_pid(system->allocatePID()),
- pTable(new PageTable(name(), M5_pid)),
+ pTable(new FuncPageTable(name(), M5_pid)),
initVirtMem(system->getSystemPort(), this,
SETranslatingPortProxy::Always)
{
@@ -246,6 +248,8 @@ Process::initState()
// mark this context as active so it will start ticking.
tc->activate(Cycles(0));
+
+ pTable->initState(tc);
}
// map simulator fd sim_fd to target fd tgt_fd