Commit 8237ac3c authored by Heiko Carstens's avatar Heiko Carstens

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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
parent ae6834c1
...@@ -40,14 +40,15 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment