···3535 b .Lret_from_system_call3636END(sys_clone_wrapper)37373838+ENTRY(sys_clone3_wrapper)3939+ SAVE_CALLEE_SAVED_USER4040+ bl @sys_clone34141+ DISCARD_CALLEE_SAVED_USER4242+4343+ GET_CURR_THR_INFO_FLAGS r104444+ btst r10, TIF_SYSCALL_TRACE4545+ bnz tracesys_exit4646+4747+ b .Lret_from_system_call4848+END(sys_clone3_wrapper)4949+3850ENTRY(ret_from_fork)3951 ; when the forked child comes here from the __switch_to function4052 ; r0 has the last task pointer.
+3-4
arch/arc/kernel/process.c
···171171 * | user_r25 |172172 * ------------------ <===== END of PAGE173173 */174174-int copy_thread(unsigned long clone_flags,175175- unsigned long usp, unsigned long kthread_arg,176176- struct task_struct *p)174174+int copy_thread_tls(unsigned long clone_flags, unsigned long usp,175175+ unsigned long kthread_arg, struct task_struct *p, unsigned long tls)177176{178177 struct pt_regs *c_regs; /* child's pt_regs */179178 unsigned long *childksp; /* to unwind out of __switch_to() */···230231 * set task's userland tls data ptr from 4th arg231232 * clone C-lib call is difft from clone sys-call232233 */233233- task_thread_info(p)->thr_ptr = regs->r3;234234+ task_thread_info(p)->thr_ptr = tls;234235 } else {235236 /* Normal fork case: set parent's TLS ptr in child */236237 task_thread_info(p)->thr_ptr =