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

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

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
Loading
Loading
Loading
Loading
+10 −10
Original line number Original line Diff line number Diff line
@@ -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),