| #include <linux/elfcore.h> | |
| #include <linux/sched.h> | |
| #include <asm/fpu.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; | |
| } | |