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 |
