diff options
Diffstat (limited to 'arch/sh/kernel/traps.c')
| -rw-r--r-- | arch/sh/kernel/traps.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 95c810b3c97e..c2c597e09482 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c | |||
| @@ -741,20 +741,12 @@ void show_stack(struct task_struct *tsk, unsigned long *sp) | |||
| 741 | unsigned long module_end = VMALLOC_END; | 741 | unsigned long module_end = VMALLOC_END; |
| 742 | int i = 1; | 742 | int i = 1; |
| 743 | 743 | ||
| 744 | if (tsk && !sp) { | 744 | if (!tsk) |
| 745 | tsk = current; | ||
| 746 | if (tsk == current) | ||
| 747 | sp = (unsigned long *)current_stack_pointer; | ||
| 748 | else | ||
| 745 | sp = (unsigned long *)tsk->thread.sp; | 749 | sp = (unsigned long *)tsk->thread.sp; |
| 746 | } | ||
| 747 | |||
| 748 | if (!sp) { | ||
| 749 | __asm__ __volatile__ ( | ||
| 750 | "mov r15, %0\n\t" | ||
| 751 | "stc r7_bank, %1\n\t" | ||
| 752 | : "=r" (module_start), | ||
| 753 | "=r" (module_end) | ||
| 754 | ); | ||
| 755 | |||
| 756 | sp = (unsigned long *)module_start; | ||
| 757 | } | ||
| 758 | 750 | ||
| 759 | stack = sp; | 751 | stack = sp; |
| 760 | 752 | ||
