@samitouri / QOSamiQemu / commits / 8ef71fe91c

target/sparc: Factor sparc_cpu_gdb_write_register() out

Factor sparc_cpu_gdb_write_register() out. Prefer ldn_p(target_long_bits/8) over target-specific ldtul_p(). Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20260219191955.83815-25-philmd@linaro.org>

Philippe Mathieu-Daudé committed Feb 17, 2026 at 16:34 UTC 8ef71fe91c8b8b2aea1408885e487a4bdae10977
1 file changed +13 -14
target/sparc/gdbstub.c
+13 -14
@@ -124,19 +124,22 @@ static int sparc_cp0_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
124 return 0;
125 }
126
127 +static unsigned sparc_gdb_register_bytes(void)
128 +{
129 +#ifdef CONFIG_USER_ONLY
130 +# if defined(TARGET_ABI32)
131 + return 4;
132 +# endif
133 +#endif
134 + return target_long_bits() / 8;
135 +}
136 +
137 int sparc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
138 {
139 SPARCCPU *cpu = SPARC_CPU(cs);
140 CPUSPARCState *env = &cpu->env;
131 -#if defined(TARGET_ABI32)
132 - uint32_t tmp;
133 -
134 - tmp = ldl_p(mem_buf);
135 -#else
136 - target_ulong tmp;
137 -
138 - tmp = ldtul_p(mem_buf);
139 -#endif
141 + const unsigned regsz = sparc_gdb_register_bytes();
142 + uint64_t tmp = ldn_p(mem_buf, regsz);
143
144 if (n < 8) {
145 /* g0..g7 */
@@ -145,11 +148,7 @@ int sparc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
148 /* register window */
149 env->regwptr[n - 8] = tmp;
150 }
148 -#if defined(TARGET_ABI32) || !defined(TARGET_SPARC64)
149 - return 4;
150 -#else
151 - return 8;
152 -#endif
151 + return regsz;
152 }
153
154 static int sparc_fpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)