diff mbox series

[v4,23/28] target/i386: Restrict watchpoint code to system emulation

Message ID 20210303214708.1727801-24-f4bug@amsat.org (mailing list archive)
State New, archived
Headers show
Series cpu: Introduce SysemuCPUOps structure, remove watchpoints from usermode | expand

Commit Message

Philippe Mathieu-Daudé March 3, 2021, 9:47 p.m. UTC
We can not use watchpoints in user-mode emulation because we
need the softmmu slow path to detect accesses to watchpointed
memory. Add #ifdef'ry around it.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 target/i386/cpu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 994d58aa754..4b8f06f6193 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6182,7 +6182,6 @@  static void x86_cpu_reset(DeviceState *dev)
     env->dr[6] = DR6_FIXED_1;
     env->dr[7] = DR7_FIXED_1;
     cpu_breakpoint_remove_all(s, BP_CPU);
-    cpu_watchpoint_remove_all(s, BP_CPU);
 
     cr4 = 0;
     xcr0 = XSTATE_FP_MASK;
@@ -6205,6 +6204,8 @@  static void x86_cpu_reset(DeviceState *dev)
     if (env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_FSGSBASE) {
         cr4 |= CR4_FSGSBASE_MASK;
     }
+#else
+    cpu_watchpoint_remove_all(s, BP_CPU);
 #endif
 
     env->xcr0 = xcr0;