diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2023-02-22 22:16:51 -1000 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2023-03-05 13:44:07 -0800 |
commit | 019a98083a57861475461fd63895240b5c341077 (patch) | |
tree | 0728a302d360e5d18bf0d9caa7053c6f76bffe87 /include | |
parent | 0953674ed0acacfa9b2409678f8ce8333398ee1c (diff) | |
download | qemu-019a98083a57861475461fd63895240b5c341077.zip qemu-019a98083a57861475461fd63895240b5c341077.tar.gz qemu-019a98083a57861475461fd63895240b5c341077.tar.bz2 |
softmmu: Check watchpoints for read+write at once
Atomic operations are read-modify-write, and we'd like to
be able to test both read and write with one call. This is
easy enough, with BP_MEM_READ | BP_MEM_WRITE.
Add BP_HIT_SHIFT to make it easy to set BP_WATCHPOINT_HIT_*.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/hw/core/cpu.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index fb5d966..75689bf 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -923,9 +923,10 @@ void cpu_single_step(CPUState *cpu, int enabled); #define BP_GDB 0x10 #define BP_CPU 0x20 #define BP_ANY (BP_GDB | BP_CPU) -#define BP_WATCHPOINT_HIT_READ 0x40 -#define BP_WATCHPOINT_HIT_WRITE 0x80 -#define BP_WATCHPOINT_HIT (BP_WATCHPOINT_HIT_READ | BP_WATCHPOINT_HIT_WRITE) +#define BP_HIT_SHIFT 6 +#define BP_WATCHPOINT_HIT_READ (BP_MEM_READ << BP_HIT_SHIFT) +#define BP_WATCHPOINT_HIT_WRITE (BP_MEM_WRITE << BP_HIT_SHIFT) +#define BP_WATCHPOINT_HIT (BP_MEM_ACCESS << BP_HIT_SHIFT) int cpu_breakpoint_insert(CPUState *cpu, vaddr pc, int flags, CPUBreakpoint **breakpoint); |