Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 88437
b: refs/heads/master
c: 9e74a6b
h: refs/heads/master
i:
  88435: c51cdca
v: v3
  • Loading branch information
Christian Borntraeger authored and Heiko Carstens committed Apr 17, 2008
1 parent e68ba38 commit 031e0a0
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1a5debaaace41f1e91014332e6eedde4499e5638
refs/heads/master: 9e74a6b8983c2653dd2a6f51e634efa281e95d59
2 changes: 2 additions & 0 deletions trunk/arch/s390/kernel/entry64.S
Original file line number Diff line number Diff line change
Expand Up @@ -475,6 +475,7 @@ pgm_check_handler:
pgm_no_vtime:
#endif
lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct
mvc SP_ARGS(8,%r15),__LC_LAST_BREAK
TRACE_IRQS_OFF
lgf %r3,__LC_PGM_ILC # load program interruption code
lghi %r8,0x7f
Expand Down Expand Up @@ -847,6 +848,7 @@ stack_overflow:
je 0f
la %r1,__LC_SAVE_AREA+32
0: mvc SP_R12(32,%r15),0(%r1) # move %r12-%r15 to stack
mvc SP_ARGS(8,%r15),__LC_LAST_BREAK
xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) # clear back chain
la %r2,SP_PTREGS(%r15) # load pt_regs
jg kernel_stack_overflow
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/s390/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ void show_regs(struct pt_regs *regs)
/* Show stack backtrace if pt_regs is from kernel mode */
if (!(regs->psw.mask & PSW_MASK_PSTATE))
show_trace(NULL, (unsigned long *) regs->gprs[15]);
show_last_breaking_event(regs);
}

extern void kernel_thread_starter(void);
Expand Down
10 changes: 9 additions & 1 deletion trunk/arch/s390/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,6 @@ void show_trace(struct task_struct *task, unsigned long *stack)
else
__show_trace(sp, S390_lowcore.thread_info,
S390_lowcore.thread_info + THREAD_SIZE);
printk("\n");
if (!task)
task = current;
debug_show_held_locks(task);
Expand Down Expand Up @@ -162,6 +161,15 @@ void show_stack(struct task_struct *task, unsigned long *sp)
show_trace(task, sp);
}

#ifdef CONFIG_64BIT
void show_last_breaking_event(struct pt_regs *regs)
{
printk("Last Breaking-Event-Address:\n");
printk(" [<%016lx>] ", regs->args[0] & PSW_ADDR_INSN);
print_symbol("%s\n", regs->args[0] & PSW_ADDR_INSN);
}
#endif

/*
* The architecture-independent dump_stack generator
*/
Expand Down
2 changes: 2 additions & 0 deletions trunk/include/asm-s390/lowcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
#define __LC_IO_INT_WORD 0x0C0
#define __LC_MCCK_CODE 0x0E8

#define __LC_LAST_BREAK 0x110

#define __LC_RETURN_PSW 0x200

#define __LC_SAVE_AREA 0xC00
Expand Down
7 changes: 7 additions & 0 deletions trunk/include/asm-s390/processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,13 @@ extern void task_show_regs(struct seq_file *m, struct task_struct *task);
extern void show_registers(struct pt_regs *regs);
extern void show_code(struct pt_regs *regs);
extern void show_trace(struct task_struct *task, unsigned long *sp);
#ifdef CONFIG_64BIT
extern void show_last_breaking_event(struct pt_regs *regs);
#else
static inline void show_last_breaking_event(struct pt_regs *regs)
{
}
#endif

unsigned long get_wchan(struct task_struct *p);
#define task_pt_regs(tsk) ((struct pt_regs *) \
Expand Down

0 comments on commit 031e0a0

Please sign in to comment.