summary refs log tree commit diff stats
path: root/target/avr/gdbstub.c
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2021-07-20 05:48:46 -1000
committerRichard Henderson <richard.henderson@linaro.org>2021-07-21 07:47:05 -1000
commite64cb6c231e0de00f88d4cd0c4dd3481dacfc0d9 (patch)
tree5f4709523dbed87f9ef1f0f98a222b1c2064265e /target/avr/gdbstub.c
parent5bc31e944019e46daeb7dd4d19280e8333aa448d (diff)
downloadfocaccia-qemu-e64cb6c231e0de00f88d4cd0c4dd3481dacfc0d9.tar.gz
focaccia-qemu-e64cb6c231e0de00f88d4cd0c4dd3481dacfc0d9.zip
target/avr: Implement gdb_adjust_breakpoint
Ensure at registration that all breakpoints are in
code space, not data space.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target/avr/gdbstub.c')
-rw-r--r--target/avr/gdbstub.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/target/avr/gdbstub.c b/target/avr/gdbstub.c
index c28ed67efe..1c1b908c92 100644
--- a/target/avr/gdbstub.c
+++ b/target/avr/gdbstub.c
@@ -82,3 +82,16 @@ int avr_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 
     return 0;
 }
+
+vaddr avr_cpu_gdb_adjust_breakpoint(CPUState *cpu, vaddr addr)
+{
+    /*
+     * This is due to some strange GDB behavior
+     * Let's assume main has address 0x100:
+     * b main   - sets breakpoint at address 0x00000100 (code)
+     * b *0x100 - sets breakpoint at address 0x00800100 (data)
+     *
+     * Force all breakpoints into code space.
+     */
+    return addr % OFFSET_DATA;
+}