xtensa: enable CORE_DUMP_USE_REGSET
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 21 Nov 2018 04:09:58 +0000 (20:09 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Mon, 17 Dec 2018 21:48:22 +0000 (13:48 -0800)
Drop xtensa_elf_core_copy_regs function, ELF_CORE_COPY_REGS macro, and
dump_fpu function. Define CORE_DUMP_USE_REGSET to make ELF core dumper
use regset interface.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/include/asm/elf.h
arch/xtensa/kernel/process.c

index c30c73eea26778a016ca4774a5117a96f5b4ef8f..909a6ab4f22b43ec5ada6b5fc9312144d6da8884 100644 (file)
@@ -86,11 +86,6 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 typedef unsigned int elf_fpreg_t;
 typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
 
-#define ELF_CORE_COPY_REGS(_eregs, _pregs)                             \
-       xtensa_elf_core_copy_regs ((xtensa_gregset_t*)&(_eregs), _pregs);
-
-extern void xtensa_elf_core_copy_regs (xtensa_gregset_t *, struct pt_regs *);
-
 /*
  * This is used to ensure we don't load something for the wrong architecture.
  */
@@ -114,6 +109,7 @@ extern void xtensa_elf_core_copy_regs (xtensa_gregset_t *, struct pt_regs *);
 #define ELF_ARCH       EM_XTENSA
 
 #define ELF_EXEC_PAGESIZE      PAGE_SIZE
+#define CORE_DUMP_USE_REGSET
 
 /*
  * This is the location that an ET_DYN program is loaded if exec'ed.  Typical
index 27be75e88ed35fef5a36ef800436390fe3c41bee..74969a437a37cea70c273281d068b4633364f39f 100644 (file)
@@ -326,49 +326,3 @@ unsigned long get_wchan(struct task_struct *p)
        } while (count++ < 16);
        return 0;
 }
-
-/*
- * xtensa_gregset_t and 'struct pt_regs' are vastly different formats
- * of processor registers.  Besides different ordering,
- * xtensa_gregset_t contains non-live register information that
- * 'struct pt_regs' does not.  Exception handling (primarily) uses
- * 'struct pt_regs'.  Core files and ptrace use xtensa_gregset_t.
- *
- */
-
-void xtensa_elf_core_copy_regs (xtensa_gregset_t *elfregs, struct pt_regs *regs)
-{
-       unsigned long wb, ws, wm;
-       int live, last;
-
-       wb = regs->windowbase;
-       ws = regs->windowstart;
-       wm = regs->wmask;
-       ws = ((ws >> wb) | (ws << (WSBITS - wb))) & ((1 << WSBITS) - 1);
-
-       /* Don't leak any random bits. */
-
-       memset(elfregs, 0, sizeof(*elfregs));
-
-       /* Note:  PS.EXCM is not set while user task is running; its
-        * being set in regs->ps is for exception handling convenience.
-        */
-
-       elfregs->pc             = regs->pc;
-       elfregs->ps             = (regs->ps & ~(1 << PS_EXCM_BIT));
-       elfregs->lbeg           = regs->lbeg;
-       elfregs->lend           = regs->lend;
-       elfregs->lcount         = regs->lcount;
-       elfregs->sar            = regs->sar;
-       elfregs->windowstart    = ws;
-
-       live = (wm & 2) ? 4 : (wm & 4) ? 8 : (wm & 8) ? 12 : 16;
-       last = XCHAL_NUM_AREGS - (wm >> 4) * 4;
-       memcpy(elfregs->a, regs->areg, live * 4);
-       memcpy(elfregs->a + last, regs->areg + last, (wm >> 4) * 16);
-}
-
-int dump_fpu(void)
-{
-       return 0;
-}