diff options
Diffstat (limited to 'arch/arm/kernel/process.c')
-rw-r--r-- | arch/arm/kernel/process.c | 24 |
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 | ||
277 | ATOMIC_NOTIFIER_HEAD(thread_notify_head); | ||
278 | |||
279 | EXPORT_SYMBOL_GPL(thread_notify_head); | ||
280 | |||
277 | /* | 281 | /* |
278 | * Free current thread data structures etc.. | 282 | * Free current thread data structures etc.. |
279 | */ | 283 | */ |
280 | void exit_thread(void) | 284 | void exit_thread(void) |
281 | { | 285 | { |
286 | thread_notify(THREAD_NOTIFY_EXIT, current_thread_info()); | ||
282 | } | 287 | } |
283 | 288 | ||
284 | ATOMIC_NOTIFIER_HEAD(thread_notify_head); | ||
285 | |||
286 | EXPORT_SYMBOL_GPL(thread_notify_head); | ||
287 | |||
288 | void flush_thread(void) | 289 | void 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 | ||
300 | void release_thread(struct task_struct *dead_task) | 301 | void 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 | ||
307 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); | 305 | asmlinkage 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 | */ |
359 | extern void kernel_thread_helper(void); | 357 | extern void kernel_thread_helper(void); |
360 | asm( ".section .text\n" | 358 | asm( ".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 |
371 | extern void kernel_thread_exit(long code); | 369 | extern void kernel_thread_exit(long code); |
372 | asm( ".section .text\n" | 370 | asm( ".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 |