Hi Sven!
On 10/11/25 23:26, Sven Schnelle wrote:
Signed-off-by: Sven Schnelle <[email protected]>
---
target/hppa/gdbstub.c | 66 +++++++++++++++++++++++++++++--------------
1 file changed, 45 insertions(+), 21 deletions(-)
+static int hppa_reg_size(CPUHPPAState *env)
+{
+ return hppa_is_pa20(env) ? 8 : 4;
+}
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;
+ }
+
+ if (hppa_is_pa20(env)) {
+ val = ldq_p(mem_buf);
+ } else {
+ val = ldl_p(mem_buf);
+ }
Alternatively:
val = ldn_p(mem_buf, hppa_reg_size(env));
switch (n) {
case 0:
@@ -267,16 +291,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);
}
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>