Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- linux-user/elfload.c | 24 +----------------------- linux-user/ppc/target_coredump.c.inc | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 linux-user/ppc/target_coredump.c.inc
diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 57bb011e63..a6e4ac86bf 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -376,29 +376,7 @@ static const VdsoImageInfo *vdso_image_info(uint32_t elf_flags) NEW_AUX_ENT(AT_UCACHEBSIZE, 0); \ } while (0) -/* See linux kernel: arch/powerpc/include/asm/elf.h. */ -#define ELF_NREG 48 -typedef target_elf_greg_t target_elf_gregset_t[ELF_NREG]; - -static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUPPCState *env) -{ - int i; - target_ulong ccr = 0; - - for (i = 0; i < ARRAY_SIZE(env->gpr); i++) { - (*regs)[i] = tswapreg(env->gpr[i]); - } - - (*regs)[32] = tswapreg(env->nip); - (*regs)[33] = tswapreg(env->msr); - (*regs)[35] = tswapreg(env->ctr); - (*regs)[36] = tswapreg(env->lr); - (*regs)[37] = tswapreg(cpu_read_xer(env)); - - ccr = ppc_get_cr(env); - (*regs)[38] = tswapreg(ccr); -} - +#include "target_coredump.c.inc" #define USE_ELF_CORE_DUMP #define ELF_EXEC_PAGESIZE 4096 diff --git a/linux-user/ppc/target_coredump.c.inc b/linux-user/ppc/target_coredump.c.inc new file mode 100644 index 0000000000..7671bf86e8 --- /dev/null +++ b/linux-user/ppc/target_coredump.c.inc @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* See linux kernel: arch/powerpc/include/asm/elf.h. */ +#define ELF_NREG 48 +typedef target_elf_greg_t target_elf_gregset_t[ELF_NREG]; + +static void elf_core_copy_regs(target_elf_gregset_t *regs, + const CPUPPCState *env) +{ + target_ulong ccr = 0; + + for (int i = 0; i < ARRAY_SIZE(env->gpr); i++) { + (*regs)[i] = tswapreg(env->gpr[i]); + } + + (*regs)[32] = tswapreg(env->nip); + (*regs)[33] = tswapreg(env->msr); + (*regs)[35] = tswapreg(env->ctr); + (*regs)[36] = tswapreg(env->lr); + (*regs)[37] = tswapreg(cpu_read_xer(env)); + + ccr = ppc_get_cr(env); + (*regs)[38] = tswapreg(ccr); +} -- 2.43.0