X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=arch%2Ffrv%2Fkernel%2Fprocess.c;h=9583a338e9d6022b7529dcffa34201917502151d;hb=f4cb57007662a4ec3c2de3c027900223e0299bdd;hp=eeeb1e2641d5b49e14a1f760ea90001d75273a45;hpb=a8c4c20dfa8b28a3c99e33c639d9c2ea5657741e;p=karo-tx-linux.git diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c index eeeb1e2641d5..9583a338e9d6 100644 --- a/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c @@ -10,6 +10,7 @@ * 2 of the License, or (at your option) any later version. */ +#include #include #include #include @@ -24,11 +25,14 @@ #include #include #include +#include +#include #include #include #include #include +#include #include #include @@ -38,6 +42,9 @@ asmlinkage void ret_from_fork(void); #include +void (*pm_power_off)(void); +EXPORT_SYMBOL(pm_power_off); + struct task_struct *alloc_task_struct(void) { struct task_struct *p = kmalloc(THREAD_SIZE, GFP_KERNEL); @@ -83,6 +90,8 @@ void cpu_idle(void) while (!need_resched()) { irq_stat[cpu].idle_timestamp = jiffies; + check_pgt_cache(); + if (!frv_dma_inprogress && idle) idle(); } @@ -203,7 +212,7 @@ int copy_thread(int nr, unsigned long clone_flags, regs0 = __kernel_frame0_ptr; childregs0 = (struct pt_regs *) - (task_stack_page(p) + THREAD_SIZE - USER_CONTEXT_SIZE); + (task_stack_page(p) + THREAD_SIZE - FRV_FRAME0_SIZE); childregs = childregs0; /* set up the userspace frame (the only place that the USP is stored) */ @@ -367,3 +376,11 @@ int elf_check_arch(const struct elf32_hdr *hdr) return 1; } + +int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpregs) +{ + memcpy(fpregs, + ¤t->thread.user->f, + sizeof(current->thread.user->f)); + return 1; +}