diff --git a/src/backend/core/registers/Cop0.cpp b/src/backend/core/registers/Cop0.cpp index dabc5175..27acd69a 100644 --- a/src/backend/core/registers/Cop0.cpp +++ b/src/backend/core/registers/Cop0.cpp @@ -294,36 +294,40 @@ static FORCE_INLINE u64 getVPN(const u64 addr, const u64 pageMask) { TLBEntry *Cop0::TLBTryMatch(const u64 vaddr, int &index) { for (int i = 0; i < 32; i++) { - if (TLBEntry *entry = &tlb[i]; entry->initialized) { - const u64 entry_vpn = getVPN(entry->entryHi.raw, entry->pageMask.raw); - const u64 vaddr_vpn = getVPN(vaddr, entry->pageMask.raw); + TLBEntry *entry = &tlb[i]; + if (!entry->initialized) + continue; + + const u64 entry_vpn = getVPN(entry->entryHi.raw, entry->pageMask.raw); + const u64 vaddr_vpn = getVPN(vaddr, entry->pageMask.raw); - const bool vpn_match = entry_vpn == vaddr_vpn; + const bool vpn_match = entry_vpn == vaddr_vpn; + const bool asid_match = entry->global || entryHi.asid == entry->entryHi.asid; - if (const bool asid_match = entry->global || entryHi.asid == entry->entryHi.asid; - vpn_match && asid_match) { - index = i; - return entry; - } - } + if(!vpn_match || !asid_match) + continue; + + index = i; + return entry; } return nullptr; } TLBEntry *Cop0::TLBTryMatch(const u64 vaddr) { - for (auto &i : tlb) { - if (TLBEntry *entry = &i; entry->initialized) { - const u64 entry_vpn = getVPN(entry->entryHi.raw, entry->pageMask.raw); - const u64 vaddr_vpn = getVPN(vaddr, entry->pageMask.raw); + for (auto &t : tlb) { + TLBEntry *entry = &t; + if (!entry->initialized) + continue; + + const u64 entry_vpn = getVPN(entry->entryHi.raw, entry->pageMask.raw); + const u64 vaddr_vpn = getVPN(vaddr, entry->pageMask.raw); - const bool vpn_match = entry_vpn == vaddr_vpn; - - if (const bool asid_match = entry->global || entryHi.asid == entry->entryHi.asid; - vpn_match && asid_match) { - return entry; - } - } + const bool vpn_match = entry_vpn == vaddr_vpn; + const bool asid_match = entry->global || entryHi.asid == entry->entryHi.asid; + + if (vpn_match && asid_match) + return entry; } return nullptr;