linux-user/sh4: write the floating-point registers to a core dump
Write an NT_FPREGSET note for SH4, matching struct user_fpu_struct from arch/sh/include/asm/user.h: fr0-fr15, xf0-xf15, fpscr, fpul. Signed-off-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Helge Deller <deller@gmx.de> Signed-off-by: Helge Deller <deller@gmx.de>
Matt Turner committed
Aug 5, 2026 at 13:15 UTC
ce276ab1a92cad460930fada1bc2e2e4a96f7595
2 files changed
+22
linux-user/sh4/elfload.c
+10
@@ -52,6 +52,16 @@ abi_ulong get_elf_hwcap(CPUState *cs)
52
return hwcap;
53
}
54
55
+void elf_core_copy_fpregs(target_elf_fpregset_t *r, const CPUSH4State *env)
56
+{
57
+ for (int i = 0; i < 16; i++) {
58
+ r->fpregs[i] = tswap32(env->fregs[i]);
59
+ r->xfpregs[i] = tswap32(env->fregs[16 + i]);
60
+ }
61
+ r->fpscr = tswap32(env->fpscr);
62
+ r->fpul = tswap32(env->fpul);
63
+}
64
+
65
void elf_core_copy_regs(target_elf_gregset_t *r, const CPUSH4State *env)
66
{
67
for (int i = 0; i < 16; i++) {
linux-user/sh4/target_elf.h
+12
@@ -25,4 +25,16 @@ typedef struct target_elf_gregset_t {
25
struct target_pt_regs pt;
26
} target_elf_gregset_t;
27
28
+#define HAVE_ELF_CORE_FPREGS 1
29
+
30
+/*
31
+ * Matches struct user_fpu_struct from arch/sh/include/asm/user.h.
32
+ */
33
+typedef struct target_elf_fpregset_t {
34
+ uint32_t fpregs[16];
35
+ uint32_t xfpregs[16];
36
+ uint32_t fpscr;
37
+ uint32_t fpul;
38
+} target_elf_fpregset_t;
39
+
40
#endif