mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-13 00:20:06 +00:00
powerpc/xmon: Fiddle xmon_depth_to_print logic in xmon_show_stack()
Currently xmon_depth_to_print is static and global, but it's only ever used in xmon_show_stack(). At least with a modern compiler it's inlined, so there's no point in it being static, we could #define it but it's only used in one place. By reworking the logic we can drop count and just decrement the max value as a loop counter. Also switch to a while loop so we actually print no more than 64 frames as you'd expect based on the variable name. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
c4de38093e
commit
0104cd6839
@ -1281,21 +1281,19 @@ static void get_function_bounds(unsigned long pc, unsigned long *startp,
|
||||
catch_memory_errors = 0;
|
||||
}
|
||||
|
||||
static int xmon_depth_to_print = 64;
|
||||
|
||||
#define LRSAVE_OFFSET (STACK_FRAME_LR_SAVE * sizeof(unsigned long))
|
||||
#define MARKER_OFFSET (STACK_FRAME_MARKER * sizeof(unsigned long))
|
||||
|
||||
static void xmon_show_stack(unsigned long sp, unsigned long lr,
|
||||
unsigned long pc)
|
||||
{
|
||||
int max_to_print = 64;
|
||||
unsigned long ip;
|
||||
unsigned long newsp;
|
||||
unsigned long marker;
|
||||
int count = 0;
|
||||
struct pt_regs regs;
|
||||
|
||||
do {
|
||||
while (max_to_print--) {
|
||||
if (sp < PAGE_OFFSET) {
|
||||
if (sp != 0)
|
||||
printf("SP (%lx) is in userspace\n", sp);
|
||||
@ -1366,7 +1364,7 @@ static void xmon_show_stack(unsigned long sp, unsigned long lr,
|
||||
break;
|
||||
|
||||
sp = newsp;
|
||||
} while (count++ < xmon_depth_to_print);
|
||||
}
|
||||
}
|
||||
|
||||
static void backtrace(struct pt_regs *excp)
|
||||
|
Loading…
x
Reference in New Issue
Block a user