summaryrefslogtreecommitdiff
path: root/mem/page_table.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mem/page_table.cc')
-rw-r--r--mem/page_table.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/mem/page_table.cc b/mem/page_table.cc
index eb2c7cdbb..c4e1ea193 100644
--- a/mem/page_table.cc
+++ b/mem/page_table.cc
@@ -58,7 +58,7 @@ PageTable::~PageTable()
}
Fault
-PageTable::page_check(Addr addr, int size, uint32_t flags) const
+PageTable::page_check(Addr addr, int size) const
{
if (size < sizeof(uint64_t)) {
if (!isPowerOf2(size)) {
@@ -66,7 +66,7 @@ PageTable::page_check(Addr addr, int size, uint32_t flags) const
return genMachineCheckFault();
}
- if (((size - 1) & addr) && (flags & NO_ALIGN_FAULT == 0))
+ if ((size - 1) & addr)
return genAlignmentFault();
}
else {
@@ -75,7 +75,7 @@ PageTable::page_check(Addr addr, int size, uint32_t flags) const
return genMachineCheckFault();
}
- if (((sizeof(uint64_t) - 1) & addr) && (flags & NO_ALIGN_FAULT == 0))
+ if ((sizeof(uint64_t) - 1) & addr)
return genAlignmentFault();
}
@@ -121,11 +121,14 @@ PageTable::translate(Addr vaddr, Addr &paddr)
Fault
-PageTable::translate(CpuRequestPtr &req)
+PageTable::translate(RequestPtr &req)
{
- assert(pageAlign(req->vaddr + req->size - 1) == pageAlign(req->vaddr));
- if (!translate(req->vaddr, req->paddr)) {
+ Addr paddr;
+ assert(pageAlign(req->getVaddr() + req->getSize() - 1)
+ == pageAlign(req->getVaddr()));
+ if (!translate(req->getVaddr(), paddr)) {
return genMachineCheckFault();
}
- return page_check(req->paddr, req->size, req->flags);
+ req->setPaddr(paddr);
+ return page_check(req->getPaddr(), req->getSize());
}