kill unused dump_fpu() instances
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 23 May 2020 00:02:02 +0000 (20:02 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 27 Jul 2020 18:33:10 +0000 (14:33 -0400)
dump_fpu() is used only on the architectures that support elf
and have neither CORE_DUMP_USE_REGSET nor ELF_CORE_COPY_FPREGS
defined.

Currently that's csky, m68k, microblaze, nds32 and unicore32.  The rest
of the instances are dead code.

NB: THIS MUST GO AFTER ELF_FDPIC CONVERSION

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
14 files changed:
arch/arc/kernel/process.c
arch/arm/kernel/process.c
arch/hexagon/kernel/process.c
arch/ia64/kernel/process.c
arch/nios2/kernel/process.c
arch/openrisc/kernel/process.c
arch/parisc/include/asm/elf.h
arch/parisc/kernel/process.c
arch/s390/kernel/process.c
arch/sh/include/asm/fpu.h
arch/sh/kernel/process_32.c
arch/sh/kernel/ptrace_32.c
arch/sparc/kernel/process_32.c
arch/sparc/kernel/process_64.c

index 8c8e517..4bfe721 100644 (file)
@@ -295,11 +295,6 @@ void flush_thread(void)
 {
 }
 
-int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
-{
-       return 0;
-}
-
 int elf_check_arch(const struct elf32_hdr *x)
 {
        unsigned int eflags;
index 58eaa1f..844099e 100644 (file)
@@ -282,21 +282,6 @@ int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs)
        return 1;
 }
 
-/*
- * fill in the fpe structure for a core dump...
- */
-int dump_fpu (struct pt_regs *regs, struct user_fp *fp)
-{
-       struct thread_info *thread = current_thread_info();
-       int used_math = thread->used_cp[1] | thread->used_cp[2];
-
-       if (used_math)
-               memcpy(fp, &thread->fpstate.soft, sizeof (*fp));
-
-       return used_math != 0;
-}
-EXPORT_SYMBOL(dump_fpu);
-
 unsigned long get_wchan(struct task_struct *p)
 {
        struct stackframe frame;
index ac07f5f..05a8fe5 100644 (file)
@@ -154,15 +154,6 @@ unsigned long get_wchan(struct task_struct *p)
 }
 
 /*
- * Required placeholder.
- */
-int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
-{
-       return 0;
-}
-
-
-/*
  * Called on the exit path of event entry; see vm_entry.S
  *
  * Interrupts will already be disabled.
index 96dfb9e..e681a6d 100644 (file)
@@ -515,51 +515,17 @@ do_copy_task_regs (struct task_struct *task, struct unw_frame_info *info, void *
 }
 
 void
-do_dump_task_fpu (struct task_struct *task, struct unw_frame_info *info, void *arg)
-{
-       elf_fpreg_t *dst = arg;
-       int i;
-
-       memset(dst, 0, sizeof(elf_fpregset_t)); /* don't leak any "random" bits */
-
-       if (unw_unwind_to_user(info) < 0)
-               return;
-
-       /* f0 is 0.0, f1 is 1.0 */
-
-       for (i = 2; i < 32; ++i)
-               unw_get_fr(info, i, dst + i);
-
-       ia64_flush_fph(task);
-       if ((task->thread.flags & IA64_THREAD_FPH_VALID) != 0)
-               memcpy(dst + 32, task->thread.fph, 96*16);
-}
-
-void
 do_copy_regs (struct unw_frame_info *info, void *arg)
 {
        do_copy_task_regs(current, info, arg);
 }
 
 void
-do_dump_fpu (struct unw_frame_info *info, void *arg)
-{
-       do_dump_task_fpu(current, info, arg);
-}
-
-void
 ia64_elf_core_copy_regs (struct pt_regs *pt, elf_gregset_t dst)
 {
        unw_init_running(do_copy_regs, dst);
 }
 
-int
-dump_fpu (struct pt_regs *pt, elf_fpregset_t dst)
-{
-       unw_init_running(do_dump_fpu, dst);
-       return 1;       /* f0-f31 are always valid so we always return 1 */
-}
-
 /*
  * Flush thread state.  This is called when a thread does an execve().
  */
index 509e785..9392d55 100644 (file)
@@ -251,11 +251,3 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp)
        regs->ea = pc;
        regs->sp = sp;
 }
-
-#include <linux/elfcore.h>
-
-/* Fill in the FPU structure for a core dump. */
-int dump_fpu(struct pt_regs *regs, elf_fpregset_t *r)
-{
-       return 0; /* Nios2 has no FPU and thus no FPU registers */
-}
index d7010e7..3895d06 100644 (file)
@@ -214,13 +214,6 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp)
        regs->sp = sp;
 }
 
-/* Fill in the fpu structure for a core dump.  */
-int dump_fpu(struct pt_regs *regs, elf_fpregset_t * fpu)
-{
-       /* TODO */
-       return 0;
-}
-
 extern struct thread_info *_switch(struct thread_info *old_ti,
                                   struct thread_info *new_ti);
 extern int lwa_flag;
index d00973a..651eacd 100644 (file)
@@ -305,9 +305,6 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
 
 struct task_struct;
 
-extern int dump_task_fpu (struct task_struct *, elf_fpregset_t *);
-#define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs) dump_task_fpu(tsk, elf_fpregs)
-
 struct pt_regs;        /* forward declaration... */
 
 
index 230a642..6801479 100644 (file)
@@ -153,25 +153,6 @@ void release_thread(struct task_struct *dead_task)
 }
 
 /*
- * Fill in the FPU structure for a core dump.
- */
-
-int dump_fpu (struct pt_regs * regs, elf_fpregset_t *r)
-{
-       if (regs == NULL)
-               return 0;
-
-       memcpy(r, regs->fr, sizeof *r);
-       return 1;
-}
-
-int dump_task_fpu (struct task_struct *tsk, elf_fpregset_t *r)
-{
-       memcpy(r, tsk->thread.regs.fr, sizeof(*r));
-       return 1;
-}
-
-/*
  * Idle thread support
  *
  * Detect when running on QEMU with SeaBIOS PDC Firmware and let
index eb6e23a..21b573c 100644 (file)
@@ -160,24 +160,6 @@ asmlinkage void execve_tail(void)
        asm volatile("sfpc %0" : : "d" (0));
 }
 
-/*
- * fill in the FPU structure for a core dump.
- */
-int dump_fpu (struct pt_regs * regs, s390_fp_regs *fpregs)
-{
-       save_fpu_regs();
-       fpregs->fpc = current->thread.fpu.fpc;
-       fpregs->pad = 0;
-       if (MACHINE_HAS_VX)
-               convert_vx_to_fp((freg_t *)&fpregs->fprs,
-                                current->thread.fpu.vxrs);
-       else
-               memcpy(&fpregs->fprs, current->thread.fpu.fprs,
-                      sizeof(fpregs->fprs));
-       return 1;
-}
-EXPORT_SYMBOL(dump_fpu);
-
 unsigned long get_wchan(struct task_struct *p)
 {
        struct unwind_state state;
index 43cfaf9..04584be 100644 (file)
@@ -37,11 +37,6 @@ struct user_regset;
 extern int do_fpu_inst(unsigned short, struct pt_regs *);
 extern int init_fpu(struct task_struct *);
 
-extern int fpregs_get(struct task_struct *target,
-                     const struct user_regset *regset,
-                     unsigned int pos, unsigned int count,
-                     void *kbuf, void __user *ubuf);
-
 static inline void __unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs)
 {
        if (task_thread_info(tsk)->status & TS_USEDFPU) {
index 6ab397b..7a59a63 100644 (file)
@@ -93,24 +93,6 @@ void release_thread(struct task_struct *dead_task)
        /* do nothing */
 }
 
-/* Fill in the fpu structure for a core dump.. */
-int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
-{
-       int fpvalid = 0;
-
-#if defined(CONFIG_SH_FPU)
-       struct task_struct *tsk = current;
-
-       fpvalid = !!tsk_used_math(tsk);
-       if (fpvalid)
-               fpvalid = !fpregs_get(tsk, NULL,
-                                     (struct membuf){fpu, sizeof(*fpu)});
-#endif
-
-       return fpvalid;
-}
-EXPORT_SYMBOL(dump_fpu);
-
 asmlinkage void ret_from_fork(void);
 asmlinkage void ret_from_kernel_thread(void);
 
index 5c93bdb..609b7c9 100644 (file)
@@ -165,7 +165,7 @@ static int genregs_set(struct task_struct *target,
 }
 
 #ifdef CONFIG_SH_FPU
-int fpregs_get(struct task_struct *target,
+static int fpregs_get(struct task_struct *target,
               const struct user_regset *regset,
               struct membuf to)
 {
index 13cb563..32b4169 100644 (file)
@@ -408,55 +408,6 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
        return 0;
 }
 
-/*
- * fill in the fpu structure for a core dump.
- */
-int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs)
-{
-       if (used_math()) {
-               memset(fpregs, 0, sizeof(*fpregs));
-               fpregs->pr_q_entrysize = 8;
-               return 1;
-       }
-#ifdef CONFIG_SMP
-       if (test_thread_flag(TIF_USEDFPU)) {
-               put_psr(get_psr() | PSR_EF);
-               fpsave(&current->thread.float_regs[0], &current->thread.fsr,
-                      &current->thread.fpqueue[0], &current->thread.fpqdepth);
-               if (regs != NULL) {
-                       regs->psr &= ~(PSR_EF);
-                       clear_thread_flag(TIF_USEDFPU);
-               }
-       }
-#else
-       if (current == last_task_used_math) {
-               put_psr(get_psr() | PSR_EF);
-               fpsave(&current->thread.float_regs[0], &current->thread.fsr,
-                      &current->thread.fpqueue[0], &current->thread.fpqdepth);
-               if (regs != NULL) {
-                       regs->psr &= ~(PSR_EF);
-                       last_task_used_math = NULL;
-               }
-       }
-#endif
-       memcpy(&fpregs->pr_fr.pr_regs[0],
-              &current->thread.float_regs[0],
-              (sizeof(unsigned long) * 32));
-       fpregs->pr_fsr = current->thread.fsr;
-       fpregs->pr_qcnt = current->thread.fpqdepth;
-       fpregs->pr_q_entrysize = 8;
-       fpregs->pr_en = 1;
-       if(fpregs->pr_qcnt != 0) {
-               memcpy(&fpregs->pr_q[0],
-                      &current->thread.fpqueue[0],
-                      sizeof(struct fpq) * fpregs->pr_qcnt);
-       }
-       /* Zero out the rest. */
-       memset(&fpregs->pr_q[fpregs->pr_qcnt], 0,
-              sizeof(struct fpq) * (32 - fpregs->pr_qcnt));
-       return 1;
-}
-
 unsigned long get_wchan(struct task_struct *task)
 {
        unsigned long pc, fp, bias = 0;
index 54945ea..c31b2ac 100644 (file)
@@ -700,72 +700,6 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
        return 0;
 }
 
-typedef struct {
-       union {
-               unsigned int    pr_regs[32];
-               unsigned long   pr_dregs[16];
-       } pr_fr;
-       unsigned int __unused;
-       unsigned int    pr_fsr;
-       unsigned char   pr_qcnt;
-       unsigned char   pr_q_entrysize;
-       unsigned char   pr_en;
-       unsigned int    pr_q[64];
-} elf_fpregset_t32;
-
-/*
- * fill in the fpu structure for a core dump.
- */
-int dump_fpu (struct pt_regs * regs, elf_fpregset_t * fpregs)
-{
-       unsigned long *kfpregs = current_thread_info()->fpregs;
-       unsigned long fprs = current_thread_info()->fpsaved[0];
-
-       if (test_thread_flag(TIF_32BIT)) {
-               elf_fpregset_t32 *fpregs32 = (elf_fpregset_t32 *)fpregs;
-
-               if (fprs & FPRS_DL)
-                       memcpy(&fpregs32->pr_fr.pr_regs[0], kfpregs,
-                              sizeof(unsigned int) * 32);
-               else
-                       memset(&fpregs32->pr_fr.pr_regs[0], 0,
-                              sizeof(unsigned int) * 32);
-               fpregs32->pr_qcnt = 0;
-               fpregs32->pr_q_entrysize = 8;
-               memset(&fpregs32->pr_q[0], 0,
-                      (sizeof(unsigned int) * 64));
-               if (fprs & FPRS_FEF) {
-                       fpregs32->pr_fsr = (unsigned int) current_thread_info()->xfsr[0];
-                       fpregs32->pr_en = 1;
-               } else {
-                       fpregs32->pr_fsr = 0;
-                       fpregs32->pr_en = 0;
-               }
-       } else {
-               if(fprs & FPRS_DL)
-                       memcpy(&fpregs->pr_regs[0], kfpregs,
-                              sizeof(unsigned int) * 32);
-               else
-                       memset(&fpregs->pr_regs[0], 0,
-                              sizeof(unsigned int) * 32);
-               if(fprs & FPRS_DU)
-                       memcpy(&fpregs->pr_regs[16], kfpregs+16,
-                              sizeof(unsigned int) * 32);
-               else
-                       memset(&fpregs->pr_regs[16], 0,
-                              sizeof(unsigned int) * 32);
-               if(fprs & FPRS_FEF) {
-                       fpregs->pr_fsr = current_thread_info()->xfsr[0];
-                       fpregs->pr_gsr = current_thread_info()->gsr[0];
-               } else {
-                       fpregs->pr_fsr = fpregs->pr_gsr = 0;
-               }
-               fpregs->pr_fprs = fprs;
-       }
-       return 1;
-}
-EXPORT_SYMBOL(dump_fpu);
-
 unsigned long get_wchan(struct task_struct *task)
 {
        unsigned long pc, fp, bias = 0;