diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2024-05-29 13:31:39 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-06-08 10:33:38 +0200 |
commit | cdc829b37d4dff686f083c577490da1d75bc159f (patch) | |
tree | 3fbff6bdeb6467b095d6907062cf160729860a75 | |
parent | 6dd7d8c6490b73dcc33dfb1fe76c081e7e2eb820 (diff) | |
download | qemu-cdc829b37d4dff686f083c577490da1d75bc159f.zip qemu-cdc829b37d4dff686f083c577490da1d75bc159f.tar.gz qemu-cdc829b37d4dff686f083c577490da1d75bc159f.tar.bz2 |
target/i386: document incorrect semantics of watchpoint following MOV/POP SS
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | target/i386/tcg/sysemu/bpt_helper.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/target/i386/tcg/sysemu/bpt_helper.c b/target/i386/tcg/sysemu/bpt_helper.c index c1d5fce..b29acf4 100644 --- a/target/i386/tcg/sysemu/bpt_helper.c +++ b/target/i386/tcg/sysemu/bpt_helper.c @@ -215,6 +215,12 @@ void breakpoint_handler(CPUState *cs) if (cs->watchpoint_hit->flags & BP_CPU) { cs->watchpoint_hit = NULL; if (check_hw_breakpoints(env, false)) { + /* + * FIXME: #DB should be delayed by one instruction if + * INHIBIT_IRQ is set (STI cannot trigger a watchpoint). + * The delayed #DB should also fuse with one generated + * by ICEBP (aka INT1). + */ raise_exception(env, EXCP01_DB); } else { cpu_loop_exit_noexc(cs); |