s390/dumpstack: convert print_symbol to %pSR
This is the same as what other architectures did. The change has also the advantage that there won't be any interleaving messages between printk() and print_symbol(). Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
This commit is contained in:
@@ -40,14 +40,15 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high)
|
|||||||
{
|
{
|
||||||
struct stack_frame *sf;
|
struct stack_frame *sf;
|
||||||
struct pt_regs *regs;
|
struct pt_regs *regs;
|
||||||
|
unsigned long addr;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
sp = sp & PSW_ADDR_INSN;
|
sp = sp & PSW_ADDR_INSN;
|
||||||
if (sp < low || sp > high - sizeof(*sf))
|
if (sp < low || sp > high - sizeof(*sf))
|
||||||
return sp;
|
return sp;
|
||||||
sf = (struct stack_frame *) sp;
|
sf = (struct stack_frame *) sp;
|
||||||
printk("([<%016lx>] ", sf->gprs[8] & PSW_ADDR_INSN);
|
addr = sf->gprs[8] & PSW_ADDR_INSN;
|
||||||
print_symbol("%s)\n", sf->gprs[8] & PSW_ADDR_INSN);
|
printk("([<%016lx>] %pSR)\n", addr, (void *)addr);
|
||||||
/* Follow the backchain. */
|
/* Follow the backchain. */
|
||||||
while (1) {
|
while (1) {
|
||||||
low = sp;
|
low = sp;
|
||||||
@@ -57,16 +58,16 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high)
|
|||||||
if (sp <= low || sp > high - sizeof(*sf))
|
if (sp <= low || sp > high - sizeof(*sf))
|
||||||
return sp;
|
return sp;
|
||||||
sf = (struct stack_frame *) sp;
|
sf = (struct stack_frame *) sp;
|
||||||
printk(" [<%016lx>] ", sf->gprs[8] & PSW_ADDR_INSN);
|
addr = sf->gprs[8] & PSW_ADDR_INSN;
|
||||||
print_symbol("%s\n", sf->gprs[8] & PSW_ADDR_INSN);
|
printk(" [<%016lx>] %pSR\n", addr, (void *)addr);
|
||||||
}
|
}
|
||||||
/* Zero backchain detected, check for interrupt frame. */
|
/* Zero backchain detected, check for interrupt frame. */
|
||||||
sp = (unsigned long) (sf + 1);
|
sp = (unsigned long) (sf + 1);
|
||||||
if (sp <= low || sp > high - sizeof(*regs))
|
if (sp <= low || sp > high - sizeof(*regs))
|
||||||
return sp;
|
return sp;
|
||||||
regs = (struct pt_regs *) sp;
|
regs = (struct pt_regs *) sp;
|
||||||
printk(" [<%016lx>] ", regs->psw.addr & PSW_ADDR_INSN);
|
addr = regs->psw.addr & PSW_ADDR_INSN;
|
||||||
print_symbol("%s\n", regs->psw.addr & PSW_ADDR_INSN);
|
printk(" [<%016lx>] %pSR\n", addr, (void *)addr);
|
||||||
low = sp;
|
low = sp;
|
||||||
sp = regs->gprs[15];
|
sp = regs->gprs[15];
|
||||||
}
|
}
|
||||||
@@ -128,8 +129,7 @@ static void show_last_breaking_event(struct pt_regs *regs)
|
|||||||
{
|
{
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
printk("Last Breaking-Event-Address:\n");
|
printk("Last Breaking-Event-Address:\n");
|
||||||
printk(" [<%016lx>] ", regs->args[0] & PSW_ADDR_INSN);
|
printk(" [<%016lx>] %pSR\n", regs->args[0], (void *)regs->args[0]);
|
||||||
print_symbol("%s\n", regs->args[0] & PSW_ADDR_INSN);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,10 +143,10 @@ void show_registers(struct pt_regs *regs)
|
|||||||
char *mode;
|
char *mode;
|
||||||
|
|
||||||
mode = user_mode(regs) ? "User" : "Krnl";
|
mode = user_mode(regs) ? "User" : "Krnl";
|
||||||
printk("%s PSW : %p %p",
|
printk("%s PSW : %p %p (%pSR)\n",
|
||||||
mode, (void *) regs->psw.mask,
|
mode, (void *) regs->psw.mask,
|
||||||
|
(void *) regs->psw.addr,
|
||||||
(void *) regs->psw.addr);
|
(void *) regs->psw.addr);
|
||||||
print_symbol(" (%s)\n", regs->psw.addr & PSW_ADDR_INSN);
|
|
||||||
printk(" R:%x T:%x IO:%x EX:%x Key:%x M:%x W:%x "
|
printk(" R:%x T:%x IO:%x EX:%x Key:%x M:%x W:%x "
|
||||||
"P:%x AS:%x CC:%x PM:%x", mask_bits(regs, PSW_MASK_PER),
|
"P:%x AS:%x CC:%x PM:%x", mask_bits(regs, PSW_MASK_PER),
|
||||||
mask_bits(regs, PSW_MASK_DAT), mask_bits(regs, PSW_MASK_IO),
|
mask_bits(regs, PSW_MASK_DAT), mask_bits(regs, PSW_MASK_IO),
|
||||||
|
|||||||
Reference in New Issue
Block a user