summaryrefslogtreecommitdiff
path: root/src/arch/arm/tlb.hh
diff options
context:
space:
mode:
authorMrinmoy Ghosh <mrinmoy.ghosh@arm.com>2013-02-15 17:40:10 -0500
committerMrinmoy Ghosh <mrinmoy.ghosh@arm.com>2013-02-15 17:40:10 -0500
commit8cef39fb6742d834e383f533539ba90f72bbc7d9 (patch)
treeb390315c48692bcb3fce65bfda3fb747600b93bb /src/arch/arm/tlb.hh
parent3af59ab386ba297b99d2a215f4c5efa10d0cfe56 (diff)
downloadgem5-8cef39fb6742d834e383f533539ba90f72bbc7d9.tar.xz
arm: fix a page table walker issue where a page could be translated multiple times
If multiple memory operations to the same page are miss the TLB they are all inserted into the page table queue and before this change could result in multiple uncessesary walks as well as duplicate enteries being inserted into the TLB.
Diffstat (limited to 'src/arch/arm/tlb.hh')
-rw-r--r--src/arch/arm/tlb.hh16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/arch/arm/tlb.hh b/src/arch/arm/tlb.hh
index f5c7320ed..c1eba1ba7 100644
--- a/src/arch/arm/tlb.hh
+++ b/src/arch/arm/tlb.hh
@@ -91,14 +91,6 @@ class TLB : public BaseTLB
TableWalker *tableWalker;
- /** Lookup an entry in the TLB
- * @param vpn virtual address
- * @param asn context id/address space id to use
- * @param functional if the lookup should modify state
- * @return pointer to TLB entrry if it exists
- */
- TlbEntry *lookup(Addr vpn, uint8_t asn, bool functional = false);
-
// Access Stats
mutable Stats::Scalar instHits;
mutable Stats::Scalar instMisses;
@@ -132,6 +124,14 @@ class TLB : public BaseTLB
typedef ArmTLBParams Params;
TLB(const Params *p);
+ /** Lookup an entry in the TLB
+ * @param vpn virtual address
+ * @param asn context id/address space id to use
+ * @param functional if the lookup should modify state
+ * @return pointer to TLB entrry if it exists
+ */
+ TlbEntry *lookup(Addr vpn, uint8_t asn, bool functional = false);
+
virtual ~TLB();
int getsize() const { return size; }