summaryrefslogtreecommitdiff
path: root/src/arch/x86/tlb.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-02-23 00:20:34 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-02-23 00:20:34 -0800
commite8c1c3e72eb01409f7ec110eee3b32c07347bf6f (patch)
tree26f23b24fdfdfff630cda342e94d055437f9d5f8 /src/arch/x86/tlb.cc
parent6c5afe6346b31edf6af245002c270a3c26618833 (diff)
downloadgem5-e8c1c3e72eb01409f7ec110eee3b32c07347bf6f.tar.xz
X86: Pass whether an access was a read/write/fetch so faults can behave accordingly.
Diffstat (limited to 'src/arch/x86/tlb.cc')
-rw-r--r--src/arch/x86/tlb.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/arch/x86/tlb.cc b/src/arch/x86/tlb.cc
index 1009386d7..34829848c 100644
--- a/src/arch/x86/tlb.cc
+++ b/src/arch/x86/tlb.cc
@@ -140,9 +140,9 @@ TLB::lookup(Addr va, bool update_lru)
#if FULL_SYSTEM
void
-TLB::walk(ThreadContext * _tc, Addr vaddr)
+TLB::walk(ThreadContext * _tc, Addr vaddr, bool write, bool execute)
{
- walker->start(_tc, vaddr);
+ walker->start(_tc, vaddr, write, execute);
}
#endif
@@ -616,7 +616,7 @@ TLB::translate(RequestPtr &req, ThreadContext *tc, bool write, bool execute)
// The vaddr already has the segment base applied.
TlbEntry *entry = lookup(vaddr);
if (!entry) {
- return new TlbFault(vaddr);
+ return new TlbFault(vaddr, write, execute);
} else {
// Do paging protection checks.
DPRINTF(TLB, "Entry found with paddr %#x, doing protection checks.\n", entry->paddr);