Update to newer tlb_flush api and flush exactly what is required, not single-page vs everything.
Signed-off-by: Richard Henderson <[email protected]> --- system/watchpoint.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/system/watchpoint.c b/system/watchpoint.c index 35cb3bdaec..fe7e0ac59f 100644 --- a/system/watchpoint.c +++ b/system/watchpoint.c @@ -29,7 +29,6 @@ CPUBreakpoint *cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, { CPUBreakpoint *wp; vaddr last = addr + len - 1; - vaddr in_page; assert(len != 0); assert(last >= addr); @@ -45,12 +44,8 @@ CPUBreakpoint *cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, interval_tree_insert(&wp->itree, &cpu->watchpoints); - in_page = -(addr | TARGET_PAGE_MASK); - if (len <= in_page) { - tlb_flush_page(cpu, addr); - } else { - tlb_flush(cpu); - } + tlb_flush_range_by_mmuidx(cpu, addr, last, ALL_MMUIDX_BITS, + target_long_bits()); return wp; } -- 2.43.0
