OSDN Git Service

cputlb: Handle watchpoints via TLB_WATCHPOINT
authorRichard Henderson <richard.henderson@linaro.org>
Sat, 24 Aug 2019 16:51:09 +0000 (09:51 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Tue, 3 Sep 2019 15:30:39 +0000 (08:30 -0700)
commit50b107c5d617eaf93301cef20221312e7a986701
tree8ff2f1b256e9847308d30c90fc431d91023e45d1
parent5787585d0406cfd54dda0c71ea1a603347ce6e71
cputlb: Handle watchpoints via TLB_WATCHPOINT

The raising of exceptions from check_watchpoint, buried inside
of the I/O subsystem, is fundamentally broken.  We do not have
the helper return address with which we can unwind guest state.

Replace PHYS_SECTION_WATCH and io_mem_watch with TLB_WATCHPOINT.
Move the call to cpu_check_watchpoint into the cputlb helpers
where we do have the helper return address.

This allows watchpoints on RAM to bypass the full i/o access path.

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
accel/tcg/cputlb.c
exec.c
include/exec/cpu-all.h