From 483dcf538ea2ac86914bf7deef1d07f3b48d8878 Mon Sep 17 00:00:00 2001 From: pbrook Date: Sun, 12 Nov 2006 20:55:05 +0000 Subject: [PATCH] Avoid redundant TLB flushes (Daniel Jacobowitz). git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2211 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-mips/op_helper.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c index bf397c9..6e31436 100644 --- a/target-mips/op_helper.c +++ b/target-mips/op_helper.c @@ -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; -- 2.7.4