66a67
> flushCache();
82,91c83,102
< PageTable::const_iterator i = lookupTable.find(vpn);
< if (i != lookupTable.end()) {
< while (i->first == vpn) {
< int index = i->second;
< PTE *pte = &table[index];
< assert(pte->valid);
< if (vpn == pte->tag && (pte->asma || pte->asn == asn)) {
< retval = pte;
< break;
< }
---
> if (PTECache[0] && vpn == PTECache[0]->tag &&
> (PTECache[0]->asma || PTECache[0]->asn == asn))
> retval = PTECache[0];
> else if (PTECache[1] && vpn == PTECache[1]->tag &&
> (PTECache[1]->asma || PTECache[1]->asn == asn))
> retval = PTECache[1];
> else if (PTECache[2] && vpn == PTECache[2]->tag &&
> (PTECache[2]->asma || PTECache[2]->asn == asn))
> retval = PTECache[2];
> else {
> PageTable::const_iterator i = lookupTable.find(vpn);
> if (i != lookupTable.end()) {
> while (i->first == vpn) {
> int index = i->second;
> PTE *pte = &table[index];
> assert(pte->valid);
> if (vpn == pte->tag && (pte->asma || pte->asn == asn)) {
> retval = pte;
> break;
> }
93c104,105
< ++i;
---
> ++i;
> }
144a157
> flushCache();
180a194
> flushCache();
187a202
> flushCache();
210a226
> flushCache();