From e06b9c34eaa388e0503426c7831a2db977a472fd Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 29 Jul 2025 06:06:03 -1000 Subject: [PATCH] linux-user: Move elf_core_copy_regs to microblaze/elfload.c Move elf_core_copy_regs to elfload.c. Move HAVE_ELF_CORE_DUMP, ELF_NREGS, target_elf_gregset_t to target_elf.h. For now, duplicate the definitions of target_elf_greg_t and tswapreg. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/elfload.c | 21 --------------------- linux-user/microblaze/elfload.c | 17 +++++++++++++++++ linux-user/microblaze/target_elf.h | 9 +++++++++ 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 5a3a5cfc39f..96ed6b65154 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -416,27 +416,6 @@ static const VdsoImageInfo *vdso_image_info(uint32_t elf_flags) #define ELF_EXEC_PAGESIZE 4096 -#define HAVE_ELF_CORE_DUMP -#define ELF_NREG 38 -typedef struct target_elf_gregset_t { - target_elf_greg_t regs[ELF_NREG]; -} target_elf_gregset_t; - -/* See linux kernel: arch/mips/kernel/process.c:elf_dump_regs. */ -void elf_core_copy_regs(target_elf_gregset_t *r, const CPUMBState *env) -{ - for (int i = 0; i < 32; i++) { - r->regs[i] = tswapreg(env->regs[i]); - } - - r->regs[32] = tswapreg(env->pc); - r->regs[33] = tswapreg(mb_cpu_read_msr(env)); - r->regs[34] = 0; - r->regs[35] = tswapreg(env->ear); - r->regs[36] = 0; - r->regs[37] = tswapreg(env->esr); -} - #endif /* TARGET_MICROBLAZE */ #ifdef TARGET_OPENRISC diff --git a/linux-user/microblaze/elfload.c b/linux-user/microblaze/elfload.c index b92442dfeb2..89250dbd631 100644 --- a/linux-user/microblaze/elfload.c +++ b/linux-user/microblaze/elfload.c @@ -3,9 +3,26 @@ #include "qemu/osdep.h" #include "qemu.h" #include "loader.h" +#include "target_elf.h" const char *get_elf_cpu_model(uint32_t eflags) { return "any"; } + +#define tswapreg(ptr) tswapal(ptr) + +void elf_core_copy_regs(target_elf_gregset_t *r, const CPUMBState *env) +{ + for (int i = 0; i < 32; i++) { + r->regs[i] = tswapreg(env->regs[i]); + } + + r->regs[32] = tswapreg(env->pc); + r->regs[33] = tswapreg(mb_cpu_read_msr(env)); + r->regs[34] = 0; + r->regs[35] = tswapreg(env->ear); + r->regs[36] = 0; + r->regs[37] = tswapreg(env->esr); +} diff --git a/linux-user/microblaze/target_elf.h b/linux-user/microblaze/target_elf.h index bfe2997fd23..cc5cc0477e3 100644 --- a/linux-user/microblaze/target_elf.h +++ b/linux-user/microblaze/target_elf.h @@ -8,4 +8,13 @@ #ifndef MICROBLAZE_TARGET_ELF_H #define MICROBLAZE_TARGET_ELF_H +#define HAVE_ELF_CORE_DUMP 1 + +typedef abi_ulong target_elf_greg_t; + +#define ELF_NREG 38 +typedef struct target_elf_gregset_t { + target_elf_greg_t regs[ELF_NREG]; +} target_elf_gregset_t; + #endif -- 2.47.3