diff options
author | Mrinmoy Ghosh <mrinmoy.ghosh@arm.com> | 2013-02-15 17:40:10 -0500 |
---|---|---|
committer | Mrinmoy Ghosh <mrinmoy.ghosh@arm.com> | 2013-02-15 17:40:10 -0500 |
commit | 8cef39fb6742d834e383f533539ba90f72bbc7d9 (patch) | |
tree | b390315c48692bcb3fce65bfda3fb747600b93bb /src/arch/arm/tlb.hh | |
parent | 3af59ab386ba297b99d2a215f4c5efa10d0cfe56 (diff) | |
download | gem5-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.hh | 16 |
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; } |