diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2017-10-09 12:35:48 -0700 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2018-01-30 10:08:18 -0800 |
commit | eaa3783b687491bb2430951d1be1d849b6be6719 (patch) | |
tree | 5b6aa1a3a3dd5b73e02e24d178d9433e5b817031 /target/hppa/gdbstub.c | |
parent | 2986721df7d5d6528d17ddc1d25d261e720fd06d (diff) | |
download | qemu-eaa3783b687491bb2430951d1be1d849b6be6719.zip qemu-eaa3783b687491bb2430951d1be1d849b6be6719.tar.gz qemu-eaa3783b687491bb2430951d1be1d849b6be6719.tar.bz2 |
target/hppa: Split address size from register size
For system mode, we will need 64-bit virtual addresses even when
we have 32-bit register sizes. Since the rest of QEMU equates
TARGET_LONG_BITS with the address size, redefine everything
related to register size in terms of a new TARGET_REGISTER_BITS.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target/hppa/gdbstub.c')
-rw-r--r-- | target/hppa/gdbstub.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/target/hppa/gdbstub.c b/target/hppa/gdbstub.c index c37a56f..228d282 100644 --- a/target/hppa/gdbstub.c +++ b/target/hppa/gdbstub.c @@ -26,7 +26,7 @@ int hppa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n) { HPPACPU *cpu = HPPA_CPU(cs); CPUHPPAState *env = &cpu->env; - target_ulong val; + target_ureg val; switch (n) { case 0: @@ -61,14 +61,25 @@ int hppa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n) } break; } - return gdb_get_regl(mem_buf, val); + + if (TARGET_REGISTER_BITS == 64) { + return gdb_get_reg64(mem_buf, val); + } else { + return gdb_get_reg32(mem_buf, val); + } } int hppa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) { HPPACPU *cpu = HPPA_CPU(cs); CPUHPPAState *env = &cpu->env; - target_ulong val = ldtul_p(mem_buf); + target_ureg val; + + if (TARGET_REGISTER_BITS == 64) { + val = ldq_p(mem_buf); + } else { + val = ldl_p(mem_buf); + } switch (n) { case 0: @@ -108,5 +119,5 @@ int hppa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) } break; } - return sizeof(target_ulong); + return sizeof(target_ureg); } |