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]>


Reply via email to