summaryrefslogtreecommitdiff
path: root/softmmu
diff options
context:
space:
mode:
authorPavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>2021-10-28 14:48:17 +0300
committerRichard Henderson <richard.henderson@linaro.org>2021-10-28 20:55:07 -0700
commitefd629fb21e2ff6a8f62642d9ed7a23dfee4d320 (patch)
tree7445fc0d37ccf4106772a90cba84d00b85857904 /softmmu
parent1ab0ba8ab525046f4727c6e1b146e779db8b0489 (diff)
downloadqemu-efd629fb21e2ff6a8f62642d9ed7a23dfee4d320.zip
softmmu: fix for "after access" watchpoints
Watchpoints that should fire after the memory access break an execution of the current block, try to translate current instruction into the separate block, which then causes debug interrupt. But cpu_interrupt can't be called in such block when icount is enabled, because interrupts muse be allowed explicitly. This patch sets CF_LAST_IO flag for retranslated block, allowing interrupt request for the last instruction. Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <163542169727.2127597.8141772572696627329.stgit@pasha-ThinkPad-X280> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'softmmu')
-rw-r--r--softmmu/physmem.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/softmmu/physmem.c b/softmmu/physmem.c
index 9765a509d2..b9a8c1d1f4 100644
--- a/softmmu/physmem.c
+++ b/softmmu/physmem.c
@@ -946,7 +946,7 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
cpu_loop_exit(cpu);
} else {
/* Force execution of one insn next time. */
- cpu->cflags_next_tb = 1 | curr_cflags(cpu);
+ cpu->cflags_next_tb = 1 | CF_LAST_IO | curr_cflags(cpu);
mmap_unlock();
cpu_loop_exit_noexc(cpu);
}