diff options
Diffstat (limited to 'arch/parisc/kernel/process.c')
| -rw-r--r-- | arch/parisc/kernel/process.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 8a488c22a99f..809905a811ed 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -181,9 +181,12 @@ int dump_task_fpu (struct task_struct *tsk, elf_fpregset_t *r)  	return 1;  } +/* + * Copy architecture-specific thread state + */  int  copy_thread(unsigned long clone_flags, unsigned long usp, -	    unsigned long arg, struct task_struct *p) +	    unsigned long kthread_arg, struct task_struct *p)  {  	struct pt_regs *cregs = &(p->thread.regs);  	void *stack = task_stack_page(p); @@ -195,11 +198,10 @@ copy_thread(unsigned long clone_flags, unsigned long usp,  	extern void * const child_return;  	if (unlikely(p->flags & PF_KTHREAD)) { +		/* kernel thread */  		memset(cregs, 0, sizeof(struct pt_regs));  		if (!usp) /* idle thread */  			return 0; - -		/* kernel thread */  		/* Must exit via ret_from_kernel_thread in order  		 * to call schedule_tail()  		 */ @@ -215,7 +217,7 @@ copy_thread(unsigned long clone_flags, unsigned long usp,  #else  		cregs->gr[26] = usp;  #endif -		cregs->gr[25] = arg; +		cregs->gr[25] = kthread_arg;  	} else {  		/* user thread */  		/* usp must be word aligned.  This also prevents users from  |