Avoid redundant TLB flushes (Daniel Jacobowitz).

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2211 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
pbrook 2006-11-12 20:55:05 +00:00
parent b362e5e067
commit 483dcf538e

View File

@ -572,8 +572,17 @@ static void invalidate_tlb (int idx)
{
tlb_t *tlb;
target_ulong addr;
uint8_t ASID;
ASID = env->CP0_EntryHi & 0xFF;
tlb = &env->tlb[idx];
/* The qemu TLB is flushed then the ASID changes, so no need to
flush these entries again. */
if (tlb->G == 0 && tlb->ASID != ASID) {
return;
}
if (tlb->V0) {
tb_invalidate_page_range(tlb->PFN[0], tlb->end - tlb->VPN);
addr = tlb->VPN;