mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
[PARISC] clean up show_stack
When we show_regs, we obviously have a struct pt_regs of the calling frame. Use these in show_stack so we don't have the entire bogus call trace up to the show_stack call. Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
This commit is contained in:
parent
b23f5baab3
commit
dc39455e79
1 changed files with 21 additions and 4 deletions
|
@ -51,6 +51,9 @@
|
|||
DEFINE_SPINLOCK(pa_dbit_lock);
|
||||
#endif
|
||||
|
||||
void parisc_show_stack(struct task_struct *t, unsigned long *sp,
|
||||
struct pt_regs *regs);
|
||||
|
||||
static int printbinary(char *buf, unsigned long x, int nbits)
|
||||
{
|
||||
unsigned long mask = 1UL << (nbits - 1);
|
||||
|
@ -149,7 +152,7 @@ void show_regs(struct pt_regs *regs)
|
|||
printk(level);
|
||||
print_symbol(" RP(r2): %s\n", regs->gr[2]);
|
||||
|
||||
dump_stack();
|
||||
parisc_show_stack(current, NULL, regs);
|
||||
}
|
||||
|
||||
|
||||
|
@ -183,11 +186,19 @@ static void do_show_stack(struct unwind_frame_info *info)
|
|||
printk("\n");
|
||||
}
|
||||
|
||||
void show_stack(struct task_struct *task, unsigned long *s)
|
||||
void parisc_show_stack(struct task_struct *task, unsigned long *sp,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
struct unwind_frame_info info;
|
||||
struct task_struct *t;
|
||||
|
||||
if (!task) {
|
||||
t = task ? task : current;
|
||||
if (regs) {
|
||||
unwind_frame_init(&info, t, regs);
|
||||
goto show_stack;
|
||||
}
|
||||
|
||||
if (t == current) {
|
||||
unsigned long sp;
|
||||
|
||||
HERE:
|
||||
|
@ -203,12 +214,18 @@ void show_stack(struct task_struct *task, unsigned long *s)
|
|||
unwind_frame_init(&info, current, &r);
|
||||
}
|
||||
} else {
|
||||
unwind_frame_init_from_blocked_task(&info, task);
|
||||
unwind_frame_init_from_blocked_task(&info, t);
|
||||
}
|
||||
|
||||
show_stack:
|
||||
do_show_stack(&info);
|
||||
}
|
||||
|
||||
void show_stack(struct task_struct *t, unsigned long *sp)
|
||||
{
|
||||
return parisc_show_stack(t, sp, NULL);
|
||||
}
|
||||
|
||||
int is_valid_bugaddr(unsigned long iaoq)
|
||||
{
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue