Allow the debug_check_watchpoint callback to see the entire range that triggered the query.
Signed-off-by: Richard Henderson <[email protected]> --- include/exec/breakpoint.h | 1 + accel/tcg/watchpoint.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/include/exec/breakpoint.h b/include/exec/breakpoint.h index 60fda8dbb7..fe6dd02bdf 100644 --- a/include/exec/breakpoint.h +++ b/include/exec/breakpoint.h @@ -37,6 +37,7 @@ struct CPUBreakpoint { struct CPUWatchpoint { IntervalTreeNode itree; vaddr hitaddr; + vaddr hitlast; MemTxAttrs hitattrs; BreakpointFlags flags; unsigned id; diff --git a/accel/tcg/watchpoint.c b/accel/tcg/watchpoint.c index a7ce5fa9dd..edd1d5708b 100644 --- a/accel/tcg/watchpoint.c +++ b/accel/tcg/watchpoint.c @@ -89,6 +89,7 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len, wp->flags &= ~BP_WATCHPOINT_HIT; wp->flags |= flags << BP_HIT_SHIFT; wp->hitaddr = MAX(addr, wp->itree.start); + wp->hitlast = MIN(last, wp->itree.last); wp->hitattrs = attrs; found_wp = wp; @@ -109,6 +110,7 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len, wp->flags &= ~BP_WATCHPOINT_HIT; wp->flags |= flags << BP_HIT_SHIFT; wp->hitaddr = MAX(addr, wp->itree.start); + wp->hitlast = MIN(last, wp->itree.last); wp->hitattrs = attrs; if (tcg_ops->debug_check_watchpoint -- 2.43.0
