flagday: don't pass regs to copy_thread()
[linux-3.10.git] / arch / blackfin / kernel / process.c
index e5ae8fc..582276e 100644 (file)
@@ -141,14 +141,14 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
 int
 copy_thread(unsigned long clone_flags,
            unsigned long usp, unsigned long topstk,
-           struct task_struct *p, struct pt_regs *regs)
+           struct task_struct *p)
 {
        struct pt_regs *childregs;
        unsigned long *v;
 
        childregs = (struct pt_regs *) (task_stack_page(p) + THREAD_SIZE) - 1;
        v = ((unsigned long *)childregs) - 2;
-       if (unlikely(!regs)) {
+       if (unlikely(p->flags & PF_KTHREAD)) {
                memset(childregs, 0, sizeof(struct pt_regs));
                v[0] = usp;
                v[1] = topstk;
@@ -157,7 +157,7 @@ copy_thread(unsigned long clone_flags,
                __asm__ __volatile__("%0 = syscfg;":"=da"(childregs->syscfg):);
                p->thread.usp = 0;
        } else {
-               *childregs = *regs;
+               *childregs = *current_pt_regs();
                childregs->r0 = 0;
                p->thread.usp = usp ? : rdusp();
                v[0] = v[1] = 0;