diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2013-09-02 05:20:00 -0400 |
---|---|---|
committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2013-09-04 11:19:07 -0400 |
commit | 8237ac3c4c827a187538fab1ca370e34addc922d (patch) | |
tree | 3516de56381f5bfff7cb8fd5c4620bbe5b458732 /arch/s390 | |
parent | ae6834c1e4bdfede56eee815595a19c690fddcae (diff) |
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>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/dumpstack.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/s390/kernel/dumpstack.c b/arch/s390/kernel/dumpstack.c index 87acc38f73c6..99e7f6035895 100644 --- a/arch/s390/kernel/dumpstack.c +++ b/arch/s390/kernel/dumpstack.c | |||
@@ -40,14 +40,15 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high) | |||
40 | { | 40 | { |
41 | struct stack_frame *sf; | 41 | struct stack_frame *sf; |
42 | struct pt_regs *regs; | 42 | struct pt_regs *regs; |
43 | unsigned long addr; | ||
43 | 44 | ||
44 | while (1) { | 45 | while (1) { |
45 | sp = sp & PSW_ADDR_INSN; | 46 | sp = sp & PSW_ADDR_INSN; |
46 | if (sp < low || sp > high - sizeof(*sf)) | 47 | if (sp < low || sp > high - sizeof(*sf)) |
47 | return sp; | 48 | return sp; |
48 | sf = (struct stack_frame *) sp; | 49 | sf = (struct stack_frame *) sp; |
49 | printk("([<%016lx>] ", sf->gprs[8] & PSW_ADDR_INSN); | 50 | addr = sf->gprs[8] & PSW_ADDR_INSN; |
50 | print_symbol("%s)\n", sf->gprs[8] & PSW_ADDR_INSN); | 51 | printk("([<%016lx>] %pSR)\n", addr, (void *)addr); |
51 | /* Follow the backchain. */ | 52 | /* Follow the backchain. */ |
52 | while (1) { | 53 | while (1) { |
53 | low = sp; | 54 | low = sp; |
@@ -57,16 +58,16 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high) | |||
57 | if (sp <= low || sp > high - sizeof(*sf)) | 58 | if (sp <= low || sp > high - sizeof(*sf)) |
58 | return sp; | 59 | return sp; |
59 | sf = (struct stack_frame *) sp; | 60 | sf = (struct stack_frame *) sp; |
60 | printk(" [<%016lx>] ", sf->gprs[8] & PSW_ADDR_INSN); | 61 | addr = sf->gprs[8] & PSW_ADDR_INSN; |
61 | print_symbol("%s\n", sf->gprs[8] & PSW_ADDR_INSN); | 62 | printk(" [<%016lx>] %pSR\n", addr, (void *)addr); |
62 | } | 63 | } |
63 | /* Zero backchain detected, check for interrupt frame. */ | 64 | /* Zero backchain detected, check for interrupt frame. */ |
64 | sp = (unsigned long) (sf + 1); | 65 | sp = (unsigned long) (sf + 1); |
65 | if (sp <= low || sp > high - sizeof(*regs)) | 66 | if (sp <= low || sp > high - sizeof(*regs)) |
66 | return sp; | 67 | return sp; |
67 | regs = (struct pt_regs *) sp; | 68 | regs = (struct pt_regs *) sp; |
68 | printk(" [<%016lx>] ", regs->psw.addr & PSW_ADDR_INSN); | 69 | addr = regs->psw.addr & PSW_ADDR_INSN; |
69 | print_symbol("%s\n", regs->psw.addr & PSW_ADDR_INSN); | 70 | printk(" [<%016lx>] %pSR\n", addr, (void *)addr); |
70 | low = sp; | 71 | low = sp; |
71 | sp = regs->gprs[15]; | 72 | sp = regs->gprs[15]; |
72 | } | 73 | } |
@@ -128,8 +129,7 @@ static void show_last_breaking_event(struct pt_regs *regs) | |||
128 | { | 129 | { |
129 | #ifdef CONFIG_64BIT | 130 | #ifdef CONFIG_64BIT |
130 | printk("Last Breaking-Event-Address:\n"); | 131 | printk("Last Breaking-Event-Address:\n"); |
131 | printk(" [<%016lx>] ", regs->args[0] & PSW_ADDR_INSN); | 132 | printk(" [<%016lx>] %pSR\n", regs->args[0], (void *)regs->args[0]); |
132 | print_symbol("%s\n", regs->args[0] & PSW_ADDR_INSN); | ||
133 | #endif | 133 | #endif |
134 | } | 134 | } |
135 | 135 | ||
@@ -143,10 +143,10 @@ void show_registers(struct pt_regs *regs) | |||
143 | char *mode; | 143 | char *mode; |
144 | 144 | ||
145 | mode = user_mode(regs) ? "User" : "Krnl"; | 145 | mode = user_mode(regs) ? "User" : "Krnl"; |
146 | printk("%s PSW : %p %p", | 146 | printk("%s PSW : %p %p (%pSR)\n", |
147 | mode, (void *) regs->psw.mask, | 147 | mode, (void *) regs->psw.mask, |
148 | (void *) regs->psw.addr, | ||
148 | (void *) regs->psw.addr); | 149 | (void *) regs->psw.addr); |
149 | print_symbol(" (%s)\n", regs->psw.addr & PSW_ADDR_INSN); | ||
150 | printk(" R:%x T:%x IO:%x EX:%x Key:%x M:%x W:%x " | 150 | printk(" R:%x T:%x IO:%x EX:%x Key:%x M:%x W:%x " |
151 | "P:%x AS:%x CC:%x PM:%x", mask_bits(regs, PSW_MASK_PER), | 151 | "P:%x AS:%x CC:%x PM:%x", mask_bits(regs, PSW_MASK_PER), |
152 | mask_bits(regs, PSW_MASK_DAT), mask_bits(regs, PSW_MASK_IO), | 152 | mask_bits(regs, PSW_MASK_DAT), mask_bits(regs, PSW_MASK_IO), |