aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/process.c')
-rw-r--r--arch/arm/kernel/process.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 0d96d0171c05..acf5e6fdb6dc 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -16,7 +16,6 @@
16#include <linux/mm.h> 16#include <linux/mm.h>
17#include <linux/stddef.h> 17#include <linux/stddef.h>
18#include <linux/unistd.h> 18#include <linux/unistd.h>
19#include <linux/slab.h>
20#include <linux/user.h> 19#include <linux/user.h>
21#include <linux/delay.h> 20#include <linux/delay.h>
22#include <linux/reboot.h> 21#include <linux/reboot.h>
@@ -212,7 +211,8 @@ void __show_regs(struct pt_regs *regs)
212 char buf[64]; 211 char buf[64];
213 212
214 printk("CPU: %d %s (%s %.*s)\n", 213 printk("CPU: %d %s (%s %.*s)\n",
215 smp_processor_id(), print_tainted(), init_utsname()->release, 214 raw_smp_processor_id(), print_tainted(),
215 init_utsname()->release,
216 (int)strcspn(init_utsname()->version, " "), 216 (int)strcspn(init_utsname()->version, " "),
217 init_utsname()->version); 217 init_utsname()->version);
218 print_symbol("PC is at %s\n", instruction_pointer(regs)); 218 print_symbol("PC is at %s\n", instruction_pointer(regs));
@@ -274,17 +274,18 @@ void show_regs(struct pt_regs * regs)
274 __backtrace(); 274 __backtrace();
275} 275}
276 276
277ATOMIC_NOTIFIER_HEAD(thread_notify_head);
278
279EXPORT_SYMBOL_GPL(thread_notify_head);
280
277/* 281/*
278 * Free current thread data structures etc.. 282 * Free current thread data structures etc..
279 */ 283 */
280void exit_thread(void) 284void exit_thread(void)
281{ 285{
286 thread_notify(THREAD_NOTIFY_EXIT, current_thread_info());
282} 287}
283 288
284ATOMIC_NOTIFIER_HEAD(thread_notify_head);
285
286EXPORT_SYMBOL_GPL(thread_notify_head);
287
288void flush_thread(void) 289void flush_thread(void)
289{ 290{
290 struct thread_info *thread = current_thread_info(); 291 struct thread_info *thread = current_thread_info();
@@ -299,9 +300,6 @@ void flush_thread(void)
299 300
300void release_thread(struct task_struct *dead_task) 301void release_thread(struct task_struct *dead_task)
301{ 302{
302 struct thread_info *thread = task_thread_info(dead_task);
303
304 thread_notify(THREAD_NOTIFY_RELEASE, thread);
305} 303}
306 304
307asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); 305asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
@@ -357,7 +355,7 @@ EXPORT_SYMBOL(dump_fpu);
357 * the thread function, and r3 points to the exit function. 355 * the thread function, and r3 points to the exit function.
358 */ 356 */
359extern void kernel_thread_helper(void); 357extern void kernel_thread_helper(void);
360asm( ".section .text\n" 358asm( ".pushsection .text\n"
361" .align\n" 359" .align\n"
362" .type kernel_thread_helper, #function\n" 360" .type kernel_thread_helper, #function\n"
363"kernel_thread_helper:\n" 361"kernel_thread_helper:\n"
@@ -365,11 +363,11 @@ asm( ".section .text\n"
365" mov lr, r3\n" 363" mov lr, r3\n"
366" mov pc, r2\n" 364" mov pc, r2\n"
367" .size kernel_thread_helper, . - kernel_thread_helper\n" 365" .size kernel_thread_helper, . - kernel_thread_helper\n"
368" .previous"); 366" .popsection");
369 367
370#ifdef CONFIG_ARM_UNWIND 368#ifdef CONFIG_ARM_UNWIND
371extern void kernel_thread_exit(long code); 369extern void kernel_thread_exit(long code);
372asm( ".section .text\n" 370asm( ".pushsection .text\n"
373" .align\n" 371" .align\n"
374" .type kernel_thread_exit, #function\n" 372" .type kernel_thread_exit, #function\n"
375"kernel_thread_exit:\n" 373"kernel_thread_exit:\n"
@@ -379,7 +377,7 @@ asm( ".section .text\n"
379" nop\n" 377" nop\n"
380" .fnend\n" 378" .fnend\n"
381" .size kernel_thread_exit, . - kernel_thread_exit\n" 379" .size kernel_thread_exit, . - kernel_thread_exit\n"
382" .previous"); 380" .popsection");
383#else 381#else
384#define kernel_thread_exit do_exit 382#define kernel_thread_exit do_exit
385#endif 383#endif