Avi reported [1] that target-xtensa incorrectly supply virtual addresses to tb_invalidate_phys_page_range. Currently there's no way to invalidate all cached TBs at the given virtual address in softmmu mode. As a shortcut solution I translate virtual address to physical address using guest TLB and reuse most of breakpoint_invalidate() code to invalidate TB at that physical address.
This series is extracted from my recent xtensa pull request, build of usermode targets is fixed. [1] http://lists.gnu.org/archive/html/qemu-devel/2012-03/msg03572.html Max Filippov (4): exec: provide tb_invalidate_phys_addr function target-xtensa: fix tb invalidation for IBREAK and LOOP target-xtensa: add tests for LBEG/LEND invalidation target-xtensa: add test for IBREAK invalidation exec-all.h | 1 + exec.c | 9 +++++-- target-xtensa/op_helper.c | 29 ++++++++++++++--------- target-xtensa/translate.c | 2 + tests/tcg/xtensa/test_break.S | 34 +++++++++++++++++++++++++++ tests/tcg/xtensa/test_loop.S | 50 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 111 insertions(+), 14 deletions(-) -- 1.7.7.6