From d818bbae24aa789fc9f1fbbfc8832506321ceb92 Mon Sep 17 00:00:00 2001 From: Dave Kleikamp Date: Wed, 21 May 2014 13:58:40 -0500 Subject: [PATCH] sparc64: add sparc64_elf_core_copy_regs original patch by Bob Picco Signed-off-by: Dave Kleikamp Cc: Bob Picco --- arch/sparc/include/asm/elf_64.h | 3 +++ arch/sparc/kernel/process_64.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/arch/sparc/include/asm/elf_64.h b/arch/sparc/include/asm/elf_64.h index 3b102c340b138..684e31dbf9f46 100644 --- a/arch/sparc/include/asm/elf_64.h +++ b/arch/sparc/include/asm/elf_64.h @@ -119,6 +119,9 @@ typedef unsigned long elf_greg_t; #define ELF_NGREG 36 typedef elf_greg_t elf_gregset_t[ELF_NGREG]; +extern void sparc64_elf_core_copy_regs(elf_gregset_t dst, struct pt_regs *regs); +#define ELF_CORE_COPY_REGS(DEST, REGS) \ + sparc64_elf_core_copy_regs((DEST), (REGS)); typedef struct { unsigned long pr_regs[32]; diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 46a59643bb1ce..92a641b520061 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -777,3 +777,13 @@ unsigned long get_wchan(struct task_struct *task) out: return ret; } + +void sparc64_elf_core_copy_regs(elf_gregset_t dst, struct pt_regs *regs) +{ + memcpy(&dst[0], regs->u_regs, 8 * sizeof(unsigned long)); + memcpy(&dst[24], ®s->u_regs[8], 8 * sizeof(unsigned long)); + dst[32] = regs->tstate; + dst[33] = regs->tpc; + dst[34] = regs->tnpc; + dst[35] = regs->y; +} -- 2.49.0