* [PATCH v2 0/1] 64 Bit support for hppa gdbstub @ 2025-11-13 4:48 Sven Schnelle 2025-11-13 4:48 ` [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub Sven Schnelle 0 siblings, 1 reply; 4+ messages in thread From: Sven Schnelle @ 2025-11-13 4:48 UTC (permalink / raw) To: Richard Henderson, Helge Deller; +Cc: qemu-devel, Sven Schnelle This is a rebased version of the patch(es) sent last year. In the meantime the gdb detection patch mentioned in [1] was merged, so it should be safe to merge this Patch now. [1] https://mail.gnu.org/archive/html/qemu-devel/2024-02/msg06652.html Changes in v2: - use ldn_p() to avoid if/else Sven Schnelle (1): target/hppa: add 64 bit support to gdbstub target/hppa/gdbstub.c | 62 ++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 21 deletions(-) -- 2.51.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub 2025-11-13 4:48 [PATCH v2 0/1] 64 Bit support for hppa gdbstub Sven Schnelle @ 2025-11-13 4:48 ` Sven Schnelle 2025-12-22 22:20 ` Helge Deller 2025-12-29 22:44 ` Philippe Mathieu-Daudé 0 siblings, 2 replies; 4+ messages in thread From: Sven Schnelle @ 2025-11-13 4:48 UTC (permalink / raw) To: Richard Henderson, Helge Deller; +Cc: qemu-devel, Sven Schnelle Signed-off-by: Sven Schnelle <svens@stackframe.org> --- target/hppa/gdbstub.c | 62 ++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/target/hppa/gdbstub.c b/target/hppa/gdbstub.c index 0daa52f7af..777f4a48b9 100644 --- a/target/hppa/gdbstub.c +++ b/target/hppa/gdbstub.c @@ -21,16 +21,25 @@ #include "cpu.h" #include "gdbstub/helpers.h" -/* - * GDB 15 only supports PA1.0 via the remote protocol, and ignores - * any provided xml. Which means that any attempt to provide more - * data results in "Remote 'g' packet reply is too long". - */ +static int hppa_num_regs(CPUHPPAState *env) +{ + return hppa_is_pa20(env) ? 96 : 128; +} + +static int hppa_reg_size(CPUHPPAState *env) +{ + return hppa_is_pa20(env) ? 8 : 4; +} int hppa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { - CPUHPPAState *env = cpu_env(cs); - uint32_t val; + HPPACPU *cpu = HPPA_CPU(cs); + CPUHPPAState *env = &cpu->env; + target_ulong val; + + if (n >= hppa_num_regs(env)) { + return 0; + } switch (n) { case 0: @@ -133,24 +142,35 @@ int hppa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) val = env->cr[30]; break; case 64 ... 127: - val = extract64(env->fr[(n - 64) / 2], (n & 1 ? 0 : 32), 32); - break; - default: - if (n < 128) { - val = 0; + if (hppa_is_pa20(env)) { + val = env->fr[n - 64]; } else { - return 0; + val = extract64(env->fr[(n - 64) / 2], (n & 1 ? 0 : 32), 32); } break; + default: + val = 0; + break; } - return gdb_get_reg32(mem_buf, val); + if (hppa_is_pa20(env)) { + 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) { - CPUHPPAState *env = cpu_env(cs); - uint32_t val = ldl_p(mem_buf); + HPPACPU *cpu = HPPA_CPU(cs); + CPUHPPAState *env = &cpu->env; + target_ulong val; + + if (n >= hppa_num_regs(env)) { + return 0; + } + + val = ldn_p(mem_buf, hppa_reg_size(env)); switch (n) { case 0: @@ -267,16 +287,16 @@ int hppa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) cpu_hppa_loaded_fr0(env); break; case 65 ... 127: - { + if (hppa_is_pa20(env)) { + env->fr[n - 64] = val; + } else { uint64_t *fr = &env->fr[(n - 64) / 2]; *fr = deposit64(*fr, (n & 1 ? 0 : 32), 32, val); } break; default: - if (n >= 128) { - return 0; - } break; } - return 4; + + return hppa_reg_size(env); } -- 2.51.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub 2025-11-13 4:48 ` [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub Sven Schnelle @ 2025-12-22 22:20 ` Helge Deller 2025-12-29 22:44 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 4+ messages in thread From: Helge Deller @ 2025-12-22 22:20 UTC (permalink / raw) To: Sven Schnelle, Richard Henderson; +Cc: qemu-devel On 11/13/25 05:48, Sven Schnelle wrote: > Signed-off-by: Sven Schnelle <svens@stackframe.org> > --- > target/hppa/gdbstub.c | 62 ++++++++++++++++++++++++++++--------------- > 1 file changed, 41 insertions(+), 21 deletions(-) Reviewed-by: Helge Deller <deller@gmx.de> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub 2025-11-13 4:48 ` [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub Sven Schnelle 2025-12-22 22:20 ` Helge Deller @ 2025-12-29 22:44 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 4+ messages in thread From: Philippe Mathieu-Daudé @ 2025-12-29 22:44 UTC (permalink / raw) To: Sven Schnelle, Richard Henderson, Helge Deller; +Cc: qemu-devel On 13/11/25 05:48, Sven Schnelle wrote: > Signed-off-by: Sven Schnelle <svens@stackframe.org> > --- > target/hppa/gdbstub.c | 62 ++++++++++++++++++++++++++++--------------- > 1 file changed, 41 insertions(+), 21 deletions(-) > > diff --git a/target/hppa/gdbstub.c b/target/hppa/gdbstub.c > index 0daa52f7af..777f4a48b9 100644 > --- a/target/hppa/gdbstub.c > +++ b/target/hppa/gdbstub.c > @@ -21,16 +21,25 @@ > #include "cpu.h" > #include "gdbstub/helpers.h" > > -/* > - * GDB 15 only supports PA1.0 via the remote protocol, and ignores > - * any provided xml. Which means that any attempt to provide more > - * data results in "Remote 'g' packet reply is too long". > - */ > +static int hppa_num_regs(CPUHPPAState *env) > +{ > + return hppa_is_pa20(env) ? 96 : 128; > +} > + > +static int hppa_reg_size(CPUHPPAState *env) > +{ > + return hppa_is_pa20(env) ? 8 : 4; > +} > > int hppa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) > { > - CPUHPPAState *env = cpu_env(cs); > - uint32_t val; > + HPPACPU *cpu = HPPA_CPU(cs); 'cpu' variable is not used, why introduce it? > + CPUHPPAState *env = &cpu->env; > + target_ulong val; > + > + if (n >= hppa_num_regs(env)) { > + return 0; > + } > > switch (n) { > case 0: > @@ -133,24 +142,35 @@ int hppa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) > val = env->cr[30]; > break; > case 64 ... 127: > - val = extract64(env->fr[(n - 64) / 2], (n & 1 ? 0 : 32), 32); > - break; > - default: > - if (n < 128) { > - val = 0; > + if (hppa_is_pa20(env)) { > + val = env->fr[n - 64]; > } else { > - return 0; > + val = extract64(env->fr[(n - 64) / 2], (n & 1 ? 0 : 32), 32); > } > break; > + default: > + val = 0; > + break; > } > > - return gdb_get_reg32(mem_buf, val); > + if (hppa_is_pa20(env)) { > + 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) > { > - CPUHPPAState *env = cpu_env(cs); > - uint32_t val = ldl_p(mem_buf); > + HPPACPU *cpu = HPPA_CPU(cs); Ditto. > + CPUHPPAState *env = &cpu->env; > + target_ulong val; > + > + if (n >= hppa_num_regs(env)) { > + return 0; > + } > + > + val = ldn_p(mem_buf, hppa_reg_size(env)); > > switch (n) { > case 0: > @@ -267,16 +287,16 @@ int hppa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) > cpu_hppa_loaded_fr0(env); > break; > case 65 ... 127: > - { > + if (hppa_is_pa20(env)) { > + env->fr[n - 64] = val; > + } else { > uint64_t *fr = &env->fr[(n - 64) / 2]; > *fr = deposit64(*fr, (n & 1 ? 0 : 32), 32, val); > } > break; > default: > - if (n >= 128) { > - return 0; > - } > break; > } > - return 4; > + > + return hppa_reg_size(env); > } ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-12-29 22:45 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-13 4:48 [PATCH v2 0/1] 64 Bit support for hppa gdbstub Sven Schnelle 2025-11-13 4:48 ` [PATCH v2 1/1] target/hppa: add 64 bit support to gdbstub Sven Schnelle 2025-12-22 22:20 ` Helge Deller 2025-12-29 22:44 ` Philippe Mathieu-Daudé
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.