diff options
Diffstat (limited to 'arch/sh/kernel/dump_task.c')
-rw-r--r-- | arch/sh/kernel/dump_task.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/sh/kernel/dump_task.c b/arch/sh/kernel/dump_task.c new file mode 100644 index 00000000000..4a8a4083ff0 --- /dev/null +++ b/arch/sh/kernel/dump_task.c @@ -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; +} + |