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)