Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc39455e authored by Kyle McMartin's avatar Kyle McMartin
Browse files

[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: default avatarKyle McMartin <kyle@mcmartin.ca>
parent b23f5baa
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -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;

	t = task ? task : current;
	if (regs) {
		unwind_frame_init(&info, t, regs);
		goto show_stack;
	}

	if (!task) {
	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;