diff options
Diffstat (limited to 'arch/x86/kernel/process_64.c')
-rw-r--r-- | arch/x86/kernel/process_64.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 733ca39f367e..61cdf7fdf099 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -145,15 +145,6 @@ static inline u32 read_32bit_tls(struct task_struct *t, int tls) | |||
145 | return get_desc_base(&t->thread.tls_array[tls]); | 145 | return get_desc_base(&t->thread.tls_array[tls]); |
146 | } | 146 | } |
147 | 147 | ||
148 | /* | ||
149 | * This gets called before we allocate a new thread and copy | ||
150 | * the current task into it. | ||
151 | */ | ||
152 | void prepare_to_copy(struct task_struct *tsk) | ||
153 | { | ||
154 | unlazy_fpu(tsk); | ||
155 | } | ||
156 | |||
157 | int copy_thread(unsigned long clone_flags, unsigned long sp, | 148 | int copy_thread(unsigned long clone_flags, unsigned long sp, |
158 | unsigned long unused, | 149 | unsigned long unused, |
159 | struct task_struct *p, struct pt_regs *regs) | 150 | struct task_struct *p, struct pt_regs *regs) |
@@ -237,7 +228,7 @@ start_thread_common(struct pt_regs *regs, unsigned long new_ip, | |||
237 | current->thread.usersp = new_sp; | 228 | current->thread.usersp = new_sp; |
238 | regs->ip = new_ip; | 229 | regs->ip = new_ip; |
239 | regs->sp = new_sp; | 230 | regs->sp = new_sp; |
240 | percpu_write(old_rsp, new_sp); | 231 | this_cpu_write(old_rsp, new_sp); |
241 | regs->cs = _cs; | 232 | regs->cs = _cs; |
242 | regs->ss = _ss; | 233 | regs->ss = _ss; |
243 | regs->flags = X86_EFLAGS_IF; | 234 | regs->flags = X86_EFLAGS_IF; |
@@ -359,11 +350,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) | |||
359 | /* | 350 | /* |
360 | * Switch the PDA and FPU contexts. | 351 | * Switch the PDA and FPU contexts. |
361 | */ | 352 | */ |
362 | prev->usersp = percpu_read(old_rsp); | 353 | prev->usersp = this_cpu_read(old_rsp); |
363 | percpu_write(old_rsp, next->usersp); | 354 | this_cpu_write(old_rsp, next->usersp); |
364 | percpu_write(current_task, next_p); | 355 | this_cpu_write(current_task, next_p); |
365 | 356 | ||
366 | percpu_write(kernel_stack, | 357 | this_cpu_write(kernel_stack, |
367 | (unsigned long)task_stack_page(next_p) + | 358 | (unsigned long)task_stack_page(next_p) + |
368 | THREAD_SIZE - KERNEL_STACK_OFFSET); | 359 | THREAD_SIZE - KERNEL_STACK_OFFSET); |
369 | 360 | ||
@@ -423,6 +414,7 @@ void set_personality_ia32(bool x32) | |||
423 | current_thread_info()->status |= TS_COMPAT; | 414 | current_thread_info()->status |= TS_COMPAT; |
424 | } | 415 | } |
425 | } | 416 | } |
417 | EXPORT_SYMBOL_GPL(set_personality_ia32); | ||
426 | 418 | ||
427 | unsigned long get_wchan(struct task_struct *p) | 419 | unsigned long get_wchan(struct task_struct *p) |
428 | { | 420 | { |