From: Christian Brauner Date: Sun, 24 May 2020 21:19:09 +0000 (+0200) Subject: microblaze: switch to copy_thread_tls() X-Git-Tag: v5.9-rc1~162^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ad1bb82c057ecebfdb0b619e023c57b425ef7e7e;p=thirdparty%2Fkernel%2Flinux.git microblaze: switch to copy_thread_tls() Use the copy_thread_tls() calling convention which passes tls through a register. This is required so we can remove the copy_thread{_tls}() split and remove the HAVE_COPY_THREAD_TLS macro. Cc: Michal Simek Signed-off-by: Christian Brauner --- diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index d262ac0c8714b..e3a211a418806 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -46,6 +46,7 @@ config MICROBLAZE select CPU_NO_EFFICIENT_FFS select MMU_GATHER_NO_RANGE if MMU select SPARSE_IRQ + select HAVE_COPY_THREAD_TLS # Endianness selection choice diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c index 6527ec22f158f..c2ca9c3265100 100644 --- a/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c @@ -54,8 +54,8 @@ void flush_thread(void) { } -int copy_thread(unsigned long clone_flags, unsigned long usp, - unsigned long arg, struct task_struct *p) +int copy_thread_tls(unsigned long clone_flags, unsigned long usp, + unsigned long arg, struct task_struct *p, unsigned long tls) { struct pt_regs *childregs = task_pt_regs(p); struct thread_info *ti = task_thread_info(p); @@ -114,7 +114,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, * which contains TLS area */ if (clone_flags & CLONE_SETTLS) - childregs->r21 = childregs->r10; + childregs->r21 = tls; return 0; }