diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2009-09-17 18:14:13 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-10-05 09:32:45 -0500 |
commit | 5f30fa18ad043a841fe9f0c3917ac60f2519ebd1 (patch) | |
tree | 3dfb4f8f80a0d23ace83ded9de98822468a01f16 /target-i386/cpu.h | |
parent | 6875204c782e7c9aa5c28f96b2583fd31c50468f (diff) | |
download | hqemu-5f30fa18ad043a841fe9f0c3917ac60f2519ebd1.zip hqemu-5f30fa18ad043a841fe9f0c3917ac60f2519ebd1.tar.gz |
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 <jan.kiszka@siemens.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'target-i386/cpu.h')
-rw-r--r-- | target-i386/cpu.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/target-i386/cpu.h b/target-i386/cpu.h index a87af3b..a1107a2 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 |