sh: Share the ELF dump_task interfaces.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
a7aa92d1b4
commit
e7e0a4b54a
4 changed files with 33 additions and 28 deletions
|
@ -21,5 +21,6 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
|
||||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||||
obj-$(CONFIG_PM) += pm.o
|
obj-$(CONFIG_PM) += pm.o
|
||||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||||
|
obj-$(CONFIG_BINFMT_ELF) += dump_task.o
|
||||||
|
|
||||||
EXTRA_CFLAGS += -Werror
|
EXTRA_CFLAGS += -Werror
|
||||||
|
|
|
@ -17,5 +17,6 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
|
||||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||||
obj-$(CONFIG_PM) += pm.o
|
obj-$(CONFIG_PM) += pm.o
|
||||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||||
|
obj-$(CONFIG_BINFMT_ELF) += dump_task.o
|
||||||
|
|
||||||
EXTRA_CFLAGS += -Werror
|
EXTRA_CFLAGS += -Werror
|
||||||
|
|
31
arch/sh/kernel/dump_task.c
Normal file
31
arch/sh/kernel/dump_task.c
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#include <linux/elfcore.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Capture the user space registers if the task is not running (in user space)
|
||||||
|
*/
|
||||||
|
int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs)
|
||||||
|
{
|
||||||
|
struct pt_regs ptregs;
|
||||||
|
|
||||||
|
ptregs = *task_pt_regs(tsk);
|
||||||
|
elf_core_copy_regs(regs, &ptregs);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpu)
|
||||||
|
{
|
||||||
|
int fpvalid = 0;
|
||||||
|
|
||||||
|
#if defined(CONFIG_SH_FPU)
|
||||||
|
fpvalid = !!tsk_used_math(tsk);
|
||||||
|
if (fpvalid) {
|
||||||
|
unlazy_fpu(tsk, task_pt_regs(tsk));
|
||||||
|
memcpy(fpu, &tsk->thread.fpu.hard, sizeof(*fpu));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return fpvalid;
|
||||||
|
}
|
||||||
|
|
|
@ -230,34 +230,6 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
|
||||||
return fpvalid;
|
return fpvalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Capture the user space registers if the task is not running (in user space)
|
|
||||||
*/
|
|
||||||
int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs)
|
|
||||||
{
|
|
||||||
struct pt_regs ptregs;
|
|
||||||
|
|
||||||
ptregs = *task_pt_regs(tsk);
|
|
||||||
elf_core_copy_regs(regs, &ptregs);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpu)
|
|
||||||
{
|
|
||||||
int fpvalid = 0;
|
|
||||||
|
|
||||||
#if defined(CONFIG_SH_FPU)
|
|
||||||
fpvalid = !!tsk_used_math(tsk);
|
|
||||||
if (fpvalid) {
|
|
||||||
unlazy_fpu(tsk, task_pt_regs(tsk));
|
|
||||||
memcpy(fpu, &tsk->thread.fpu.hard, sizeof(*fpu));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return fpvalid;
|
|
||||||
}
|
|
||||||
|
|
||||||
asmlinkage void ret_from_fork(void);
|
asmlinkage void ret_from_fork(void);
|
||||||
|
|
||||||
int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
|
int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
|
||||||
|
|
Loading…
Add table
Reference in a new issue