diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2006-09-29 05:02:51 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-10-01 18:16:59 -0400 |
commit | 1924600cdb3143cdcc32b6fa43325739503659b9 (patch) | |
tree | 002a03fe8e97db3f3a2b07d1d0d27381f80357b9 /arch/mips/kernel/traps.c | |
parent | 23126692e30ec22760e0ef932c3c2fff00d440bb (diff) |
[MIPS] Make unwind_stack() can dig into interrupted context
If the PC was ret_from_irq or ret_from_exception, there will be no
more normal stackframe. Instead of stopping the unwinding, use PC and
RA saved by an exception handler to continue unwinding into the
interrupted context. This also simplifies the CONFIG_STACKTRACE code.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/traps.c')
-rw-r--r-- | arch/mips/kernel/traps.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 440b8651fd8b..b7292a56d4cd 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -115,8 +115,7 @@ static void show_backtrace(struct task_struct *task, struct pt_regs *regs) | |||
115 | printk("Call Trace:\n"); | 115 | printk("Call Trace:\n"); |
116 | do { | 116 | do { |
117 | print_ip_sym(pc); | 117 | print_ip_sym(pc); |
118 | pc = unwind_stack(task, &sp, pc, ra); | 118 | pc = unwind_stack(task, &sp, pc, &ra); |
119 | ra = 0; | ||
120 | } while (pc); | 119 | } while (pc); |
121 | printk("\n"); | 120 | printk("\n"); |
122 | } | 121 | } |