diff options
Diffstat (limited to 'arch/xtensa/kernel/process.c')
| -rw-r--r-- | arch/xtensa/kernel/process.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 0dd5784416d..5cd82e9f601 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c @@ -259,9 +259,10 @@ int copy_thread(unsigned long clone_flags, unsigned long usp_thread_fn,  			memcpy(&childregs->areg[XCHAL_NUM_AREGS - len/4],  			       ®s->areg[XCHAL_NUM_AREGS - len/4], len);  		} -// FIXME: we need to set THREADPTR in thread_info... + +		/* The thread pointer is passed in the '4th argument' (= a5) */  		if (clone_flags & CLONE_SETTLS) -			childregs->areg[2] = childregs->areg[6]; +			childregs->threadptr = childregs->areg[5];  	} else {  		p->thread.ra = MAKE_RA_FOR_CALL(  				(unsigned long)ret_from_kernel_thread, 1);  |