hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/microblaze/kernel/process.c
....@@ -18,7 +18,6 @@
1818 #include <linux/tick.h>
1919 #include <linux/bitops.h>
2020 #include <linux/ptrace.h>
21
-#include <asm/pgalloc.h>
2221 #include <linux/uaccess.h> /* for USER_DS macros */
2322 #include <asm/cacheflush.h>
2423
....@@ -54,13 +53,13 @@
5453 {
5554 }
5655
57
-int copy_thread(unsigned long clone_flags, unsigned long usp,
58
- unsigned long arg, struct task_struct *p)
56
+int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg,
57
+ struct task_struct *p, unsigned long tls)
5958 {
6059 struct pt_regs *childregs = task_pt_regs(p);
6160 struct thread_info *ti = task_thread_info(p);
6261
63
- if (unlikely(p->flags & PF_KTHREAD)) {
62
+ if (unlikely(p->flags & (PF_KTHREAD | PF_IO_WORKER))) {
6463 /* if we're creating a new kernel thread then just zeroing all
6564 * the registers. That's OK for a brand new thread.*/
6665 memset(childregs, 0, sizeof(struct pt_regs));
....@@ -114,7 +113,7 @@
114113 * which contains TLS area
115114 */
116115 if (clone_flags & CLONE_SETTLS)
117
- childregs->r21 = childregs->r10;
116
+ childregs->r21 = tls;
118117
119118 return 0;
120119 }
....@@ -150,5 +149,5 @@
150149
151150 void arch_cpu_idle(void)
152151 {
153
- local_irq_enable();
152
+ raw_local_irq_enable();
154153 }