From 5f30fa18ad043a841fe9f0c3917ac60f2519ebd1 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Thu, 17 Sep 2009 18:14:13 +0200 Subject: gdbstub: x86: Switch 64/32 bit registers dynamically Commit 56aebc891674cd2d07b3f64183415697be200084 changed gdbstub in way that debugging 32 or 16-bit guest code is no longer possible with qemu for x86_64 guest CPUs. Since that commit, qemu only provides registers sets for 64-bit, forcing current and foreseeable gdb to also switch its architecture to 64-bit. And this breaks if the inferior is 32 or 16 bit. No question, this is a gdb issue. But, as it was confirmed in several discusssions with gdb people, it is a non-trivial thing to fix. So until qemu finds a gdb version attach with a rework x86 support, we have to work around it by switching the register layout as the guest switches its execution mode between 16/32 and 64 bit. Signed-off-by: Jan Kiszka Signed-off-by: Anthony Liguori --- target-i386/cpu.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'target-i386/cpu.h') diff --git a/target-i386/cpu.h b/target-i386/cpu.h index a87af3b297..a1107a2772 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -570,10 +570,13 @@ typedef struct { uint64_t mask; } MTRRVar; +#define CPU_NB_REGS64 16 +#define CPU_NB_REGS32 8 + #ifdef TARGET_X86_64 -#define CPU_NB_REGS 16 +#define CPU_NB_REGS CPU_NB_REGS64 #else -#define CPU_NB_REGS 8 +#define CPU_NB_REGS CPU_NB_REGS32 #endif #define NB_MMU_MODES 2 -- cgit v1.2.1