diff options
| -rw-r--r-- | arch/m68knommu/kernel/traps.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/arch/m68knommu/kernel/traps.c b/arch/m68knommu/kernel/traps.c index ad7dc6347f19..5bc068462864 100644 --- a/arch/m68knommu/kernel/traps.c +++ b/arch/m68knommu/kernel/traps.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/signal.h> | 21 | #include <linux/signal.h> |
| 22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
| 23 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
| 24 | #include <linux/module.h> | ||
| 24 | #include <linux/types.h> | 25 | #include <linux/types.h> |
| 25 | #include <linux/a.out.h> | 26 | #include <linux/a.out.h> |
| 26 | #include <linux/user.h> | 27 | #include <linux/user.h> |
| @@ -38,7 +39,7 @@ | |||
| 38 | #include <asm/machdep.h> | 39 | #include <asm/machdep.h> |
| 39 | #include <asm/siginfo.h> | 40 | #include <asm/siginfo.h> |
| 40 | 41 | ||
| 41 | static char *vec_names[] = { | 42 | static char const * const vec_names[] = { |
| 42 | "RESET SP", "RESET PC", "BUS ERROR", "ADDRESS ERROR", | 43 | "RESET SP", "RESET PC", "BUS ERROR", "ADDRESS ERROR", |
| 43 | "ILLEGAL INSTRUCTION", "ZERO DIVIDE", "CHK", "TRAPcc", | 44 | "ILLEGAL INSTRUCTION", "ZERO DIVIDE", "CHK", "TRAPcc", |
| 44 | "PRIVILEGE VIOLATION", "TRACE", "LINE 1010", "LINE 1111", | 45 | "PRIVILEGE VIOLATION", "TRACE", "LINE 1010", "LINE 1111", |
| @@ -106,17 +107,20 @@ asmlinkage void buserr_c(struct frame *fp) | |||
| 106 | 107 | ||
| 107 | int kstack_depth_to_print = 48; | 108 | int kstack_depth_to_print = 48; |
| 108 | 109 | ||
| 109 | void show_stack(struct task_struct *task, unsigned long *esp) | 110 | void show_stack(struct task_struct *task, unsigned long *stack) |
| 110 | { | 111 | { |
| 111 | unsigned long *stack, *endstack, addr; | 112 | unsigned long *endstack, addr; |
| 112 | extern char _start, _etext; | 113 | extern char _start, _etext; |
| 113 | int i; | 114 | int i; |
| 114 | 115 | ||
| 115 | if (esp == NULL) | 116 | if (!stack) { |
| 116 | esp = (unsigned long *) &esp; | 117 | if (task) |
| 118 | stack = (unsigned long *)task->thread.ksp; | ||
| 119 | else | ||
| 120 | stack = (unsigned long *)&stack; | ||
| 121 | } | ||
| 117 | 122 | ||
| 118 | stack = esp; | 123 | addr = (unsigned long) stack; |
| 119 | addr = (unsigned long) esp; | ||
| 120 | endstack = (unsigned long *) PAGE_ALIGN(addr); | 124 | endstack = (unsigned long *) PAGE_ALIGN(addr); |
| 121 | 125 | ||
| 122 | printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack); | 126 | printk(KERN_EMERG "Stack from %08lx:", (unsigned long)stack); |
| @@ -306,6 +310,8 @@ void dump_stack(void) | |||
| 306 | show_stack(current, &stack); | 310 | show_stack(current, &stack); |
| 307 | } | 311 | } |
| 308 | 312 | ||
| 313 | EXPORT_SYMBOL(dump_stack); | ||
| 314 | |||
| 309 | #ifdef CONFIG_M68KFPU_EMU | 315 | #ifdef CONFIG_M68KFPU_EMU |
| 310 | asmlinkage void fpemu_signal(int signal, int code, void *addr) | 316 | asmlinkage void fpemu_signal(int signal, int code, void *addr) |
| 311 | { | 317 | { |
