提交 138fc1ee 编写于 作者: M Michael Neuling 提交者: Paul Mackerras

powerpc: Remove old dump_task_* functions

Since Roland's ptrace cleanup starting with commit
f65255e8 ("[POWERPC] Use user_regset
accessors for FP regs"), the dump_task_* functions are no longer being
used.
Signed-off-by: NMichael Neuling <mikey@neuling.org>
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 6a274c08
......@@ -105,29 +105,6 @@ void enable_kernel_fp(void)
}
EXPORT_SYMBOL(enable_kernel_fp);
int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpregs)
{
#ifdef CONFIG_VSX
int i;
elf_fpreg_t *reg;
#endif
if (!tsk->thread.regs)
return 0;
flush_fp_to_thread(current);
#ifdef CONFIG_VSX
reg = (elf_fpreg_t *)fpregs;
for (i = 0; i < ELF_NFPREG - 1; i++, reg++)
*reg = tsk->thread.TS_FPR(i);
memcpy(reg, &tsk->thread.fpscr, sizeof(elf_fpreg_t));
#else
memcpy(fpregs, &tsk->thread.TS_FPR(0), sizeof(*fpregs));
#endif
return 1;
}
#ifdef CONFIG_ALTIVEC
void enable_kernel_altivec(void)
{
......@@ -161,35 +138,6 @@ void flush_altivec_to_thread(struct task_struct *tsk)
preempt_enable();
}
}
int dump_task_altivec(struct task_struct *tsk, elf_vrregset_t *vrregs)
{
/* ELF_NVRREG includes the VSCR and VRSAVE which we need to save
* separately, see below */
const int nregs = ELF_NVRREG - 2;
elf_vrreg_t *reg;
u32 *dest;
if (tsk == current)
flush_altivec_to_thread(tsk);
reg = (elf_vrreg_t *)vrregs;
/* copy the 32 vr registers */
memcpy(reg, &tsk->thread.vr[0], nregs * sizeof(*reg));
reg += nregs;
/* copy the vscr */
memcpy(reg, &tsk->thread.vscr, sizeof(*reg));
reg++;
/* vrsave is stored in the high 32bit slot of the final 128bits */
memset(reg, 0, sizeof(*reg));
dest = (u32 *)reg;
*dest = tsk->thread.vrsave;
return 1;
}
#endif /* CONFIG_ALTIVEC */
#ifdef CONFIG_VSX
......@@ -224,29 +172,6 @@ void flush_vsx_to_thread(struct task_struct *tsk)
preempt_enable();
}
}
/*
* This dumps the lower half 64bits of the first 32 VSX registers.
* This needs to be called with dump_task_fp and dump_task_altivec to
* get all the VSX state.
*/
int dump_task_vsx(struct task_struct *tsk, elf_vrreg_t *vrregs)
{
elf_vrreg_t *reg;
double buf[32];
int i;
if (tsk == current)
flush_vsx_to_thread(tsk);
reg = (elf_vrreg_t *)vrregs;
for (i = 0; i < 32 ; i++)
buf[i] = current->thread.fpr[i][TS_VSRLOWOFFSET];
memcpy(reg, buf, sizeof(buf));
return 1;
}
#endif /* CONFIG_VSX */
#ifdef CONFIG_SPE
......@@ -279,14 +204,6 @@ void flush_spe_to_thread(struct task_struct *tsk)
preempt_enable();
}
}
int dump_spe(struct pt_regs *regs, elf_vrregset_t *evrregs)
{
flush_spe_to_thread(current);
/* We copy u32 evr[32] + u64 acc + u32 spefscr -> 35 */
memcpy(evrregs, &current->thread.evr[0], sizeof(u32) * 35);
return 1;
}
#endif /* CONFIG_SPE */
#ifndef CONFIG_SMP
......
......@@ -204,28 +204,8 @@ static inline void ppc_elf_core_copy_regs(elf_gregset_t elf_regs,
}
#define ELF_CORE_COPY_REGS(gregs, regs) ppc_elf_core_copy_regs(gregs, regs);
static inline int dump_task_regs(struct task_struct *tsk,
elf_gregset_t *elf_regs)
{
struct pt_regs *regs = tsk->thread.regs;
if (regs)
ppc_elf_core_copy_regs(*elf_regs, regs);
return 1;
}
#define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs)
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)
typedef elf_vrregset_t elf_fpxregset_t;
#ifdef CONFIG_ALTIVEC
extern int dump_task_altivec(struct task_struct *, elf_vrregset_t *vrregs);
#define ELF_CORE_COPY_XFPREGS(tsk, regs) dump_task_altivec(tsk, regs)
#define ELF_CORE_XFPREG_TYPE NT_PPC_VMX
#endif
/* ELF_HWCAP yields a mask that user programs can use to figure out what
instruction set this cpu supports. This could be done in userspace,
but it's not easy, and we've already done it here. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册