diff options
author | Christian Brauner <christian.brauner@ubuntu.com> | 2020-05-24 23:19:09 +0200 |
---|---|---|
committer | Christian Brauner <christian.brauner@ubuntu.com> | 2020-07-04 23:41:37 +0200 |
commit | ad1bb82c057ecebfdb0b619e023c57b425ef7e7e (patch) | |
tree | 24d63854b24932f3f7baa1f363244c287ded1bc1 /arch | |
parent | 643d48b8e6e71a77214c8653003f2ecd9bc10f9e (diff) |
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 <monstr@monstr.eu>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/microblaze/Kconfig | 1 | ||||
-rw-r--r-- | arch/microblaze/kernel/process.c | 6 |
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index d262ac0c8714..e3a211a41880 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 6527ec22f158..c2ca9c326510 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; } |