Loading arch/powerpc/kernel/entry_64.S +1 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,7 @@ _GLOBAL(ret_from_fork) _GLOBAL(ret_from_kernel_thread) bl .schedule_tail REST_NVGPRS(r1) ld r14, 0(r14) mtlr r14 mr r3,r15 blrl Loading arch/powerpc/kernel/process.c +1 −3 Original line number Diff line number Diff line Loading @@ -749,12 +749,10 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, struct thread_info *ti = (void *)task_stack_page(p); memset(childregs, 0, sizeof(struct pt_regs)); childregs->gpr[1] = sp + sizeof(struct pt_regs); childregs->gpr[14] = usp; /* function */ #ifdef CONFIG_PPC64 childregs->gpr[14] = *(unsigned long *)usp; clear_tsk_thread_flag(p, TIF_32BIT); childregs->softe = 1; #else childregs->gpr[14] = usp; /* function */ #endif childregs->gpr[15] = arg; p->thread.regs = NULL; /* no user register state */ Loading Loading
arch/powerpc/kernel/entry_64.S +1 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,7 @@ _GLOBAL(ret_from_fork) _GLOBAL(ret_from_kernel_thread) bl .schedule_tail REST_NVGPRS(r1) ld r14, 0(r14) mtlr r14 mr r3,r15 blrl Loading
arch/powerpc/kernel/process.c +1 −3 Original line number Diff line number Diff line Loading @@ -749,12 +749,10 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, struct thread_info *ti = (void *)task_stack_page(p); memset(childregs, 0, sizeof(struct pt_regs)); childregs->gpr[1] = sp + sizeof(struct pt_regs); childregs->gpr[14] = usp; /* function */ #ifdef CONFIG_PPC64 childregs->gpr[14] = *(unsigned long *)usp; clear_tsk_thread_flag(p, TIF_32BIT); childregs->softe = 1; #else childregs->gpr[14] = usp; /* function */ #endif childregs->gpr[15] = arg; p->thread.regs = NULL; /* no user register state */ Loading