Commit 483dcf53 authored by Paul Brook's avatar Paul Brook
Browse files

Avoid redundant TLB flushes (Daniel Jacobowitz).


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2211 c046a42c-6fe2-441c-8c8c-71466251a162
parent b362e5e0
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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;