The callers have just looked up the page descriptor, so there's no point in searching again for it.
Signed-off-by: Emilio G. Cota <c...@braap.org> --- translate-all.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/translate-all.c b/translate-all.c index 11763c6..4d05898 100644 --- a/translate-all.c +++ b/translate-all.c @@ -1246,14 +1246,13 @@ void tb_invalidate_phys_page_fast(tb_page_addr_t start, int len) } } #if !defined(CONFIG_SOFTMMU) -static void tb_invalidate_phys_page(tb_page_addr_t addr, +static void tb_invalidate_phys_page(PageDesc *p, tb_page_addr_t addr, uintptr_t pc, void *puc, bool locked) { TranslationBlock *tb; - PageDesc *p; int n; #ifdef TARGET_HAS_PRECISE_SMC TranslationBlock *current_tb = NULL; CPUState *cpu = current_cpu; @@ -1264,12 +1263,8 @@ static void tb_invalidate_phys_page(tb_page_addr_t addr, int current_flags = 0; #endif addr &= TARGET_PAGE_MASK; - p = page_find(addr >> TARGET_PAGE_BITS); - if (!p) { - return; - } tb = p->first_tb; #ifdef TARGET_HAS_PRECISE_SMC if (tb && pc != 0) { current_tb = tb_find_pc(pc); @@ -1817,9 +1812,9 @@ void page_set_flags(target_ulong start, target_ulong end, int flags) the code inside. */ if (!(p->flags & PAGE_WRITE) && (flags & PAGE_WRITE) && p->first_tb) { - tb_invalidate_phys_page(addr, 0, NULL, false); + tb_invalidate_phys_page(p, addr, 0, NULL, false); } p->flags = flags; } } @@ -1911,9 +1906,9 @@ int page_unprotect(target_ulong address, uintptr_t pc, void *puc) prot |= p->flags; /* and since the content will be modified, we must invalidate the corresponding translated code. */ - tb_invalidate_phys_page(addr, pc, puc, true); + tb_invalidate_phys_page(p, addr, pc, puc, true); #ifdef DEBUG_TB_CHECK tb_invalidate_check(addr); #endif } -- 1.9.1