diff options
Diffstat (limited to 'arch/mips/kernel/traps.c')
| -rw-r--r-- | arch/mips/kernel/traps.c | 37 | 
1 files changed, 3 insertions, 34 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index e51d8fd9a15..440b8651fd8 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -41,6 +41,7 @@  #include <asm/mmu_context.h>  #include <asm/watch.h>  #include <asm/types.h> +#include <asm/stacktrace.h>  extern asmlinkage void handle_int(void);  extern asmlinkage void handle_tlbm(void); @@ -92,16 +93,14 @@ static void show_raw_backtrace(unsigned long reg29)  }  #ifdef CONFIG_KALLSYMS -static int raw_show_trace; +int raw_show_trace;  static int __init set_raw_show_trace(char *str)  {  	raw_show_trace = 1;  	return 1;  }  __setup("raw_show_trace", set_raw_show_trace); - -extern unsigned long unwind_stack(struct task_struct *task, unsigned long *sp, -				  unsigned long pc, unsigned long ra); +#endif  static void show_backtrace(struct task_struct *task, struct pt_regs *regs)  { @@ -121,9 +120,6 @@ static void show_backtrace(struct task_struct *task, struct pt_regs *regs)  	} while (pc);  	printk("\n");  } -#else -#define show_backtrace(task, r) show_raw_backtrace((r)->regs[29]); -#endif  /*   * This routine abuses get_user()/put_user() to reference pointers @@ -158,28 +154,6 @@ static void show_stacktrace(struct task_struct *task, struct pt_regs *regs)  	show_backtrace(task, regs);  } -static __always_inline void prepare_frametrace(struct pt_regs *regs) -{ -	__asm__ __volatile__( -		".set push\n\t" -		".set noat\n\t" -#ifdef CONFIG_64BIT -		"1: dla $1, 1b\n\t" -		"sd $1, %0\n\t" -		"sd $29, %1\n\t" -		"sd $31, %2\n\t" -#else -		"1: la $1, 1b\n\t" -		"sw $1, %0\n\t" -		"sw $29, %1\n\t" -		"sw $31, %2\n\t" -#endif -		".set pop\n\t" -		: "=m" (regs->cp0_epc), -		"=m" (regs->regs[29]), "=m" (regs->regs[31]) -		: : "memory"); -} -  void show_stack(struct task_struct *task, unsigned long *sp)  {  	struct pt_regs regs; @@ -206,11 +180,6 @@ void dump_stack(void)  {  	struct pt_regs regs; -	/* -	 * Remove any garbage that may be in regs (specially func -	 * addresses) to avoid show_raw_backtrace() to report them -	 */ -	memset(®s, 0, sizeof(regs));  	prepare_frametrace(®s);  	show_backtrace(current, ®s);  }  |