csky: Implement copy_thread_tls
Subsystems (2)
[email protected]
maintainerPATCH 1/1 csky: Implement copy_thread_tls
From: Guo Ren <[email protected]>
This is required for clone3 which passes the TLS value through a struct rather than a register.
Cc Amanieu d'Antras <[email protected]>
Signed-off-by Guo Ren <[email protected]>
--- arch/csky/Kconfig | 1 + arch/csky/kernel/process.c | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-)
arch/csky/Kconfig +1 -0
@@ -36,6 +36,7 @@ config CSKY select GX6605S_TIMER if CPU_CK610 select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_AUDITSYSCALL + select HAVE_COPY_THREAD_TLS select HAVE_DYNAMIC_FTRACE select HAVE_FUNCTION_TRACER select HAVE_FUNCTION_GRAPH_TRACER
arch/csky/kernel/process.c +4 -3
@@ -40,10 +40,11 @@ unsigned long thread_saved_pc(struct task_struct *tsk)return sw->r15; } -int copy_thread (unsigned long clone_flags, +int copy_thread_tls (unsigned long clone_flags,unsigned long usp,unsigned long kthread_arg, -struct task_struct *p) +struct task_struct *p, +unsigned long tls) {struct switch_stack *childstack;struct pt_regs *childregs =task_pt_regs (p);
@@ -70,7 +71,7 @@ int copy_thread(unsigned long clone_flags, childregs->usp = usp;if (clone_flags &CLONE_SETTLS )task_thread_info (p)->tp_value = childregs->tls - = childregs->regs[0 ]; + = tls; childregs->a0 =0 ; childstack->r15 = (unsigned long ) ret_from_fork;
Signature · 1 line
2.17.0