diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-18 12:57:18 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-18 12:57:18 -0800 |
commit | d05d82f7110b08fd36178a641b69a1f206e1142b (patch) | |
tree | a274bb136f5ed336fb7a12bb86ea24cc5daffdc9 /arch/tile/kernel/stack.c | |
parent | d90f351a9bec6af3e8e7cefbbff94072461c3c9a (diff) | |
parent | 00d27c6336b00345724b2510f7c5b8cee3055f02 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
Pull arch/tile updates from Chris Metcalf:
"This is a grab bag of changes that includes some NOHZ and
context-tracking related changes, some debugging improvements,
JUMP_LABEL support, and some fixes for tilepro allmodconfig support.
We also remove the now-unused node_has_online_mem() definitions both
for tile's asm/topology.h as well as in linux/topology.h itself"
* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
numa: remove stale node_has_online_mem() define
arch/tile: move user_exit() to early kernel entry sequence
tile: fix bug in setting PT_FLAGS_DISABLE_IRQ on kernel entry
tile: fix tilepro casts for readl, writel, etc
tile: fix a -Wframe-larger-than warning
tile: include the syscall number in the backtrace
MAINTAINERS: add git URL for tile
arch/tile: adopt prepare_exit_to_usermode() model from x86
tile/jump_label: add jump label support for TILE-Gx
tile: define a macro ktext_writable_addr to get writable kernel text address
Diffstat (limited to 'arch/tile/kernel/stack.c')
-rw-r--r-- | arch/tile/kernel/stack.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/arch/tile/kernel/stack.c b/arch/tile/kernel/stack.c index 402b9c85a894..22bbbd3ff4a3 100644 --- a/arch/tile/kernel/stack.c +++ b/arch/tile/kernel/stack.c @@ -78,8 +78,7 @@ static bool read_memory_func(void *result, unsigned long address, /* Return a pt_regs pointer for a valid fault handler frame */ static struct pt_regs *valid_fault_handler(struct KBacktraceIterator* kbt) { - const char *fault = NULL; /* happy compiler */ - char fault_buf[64]; + char fault[64]; unsigned long sp = kbt->it.sp; struct pt_regs *p; @@ -90,14 +89,14 @@ static struct pt_regs *valid_fault_handler(struct KBacktraceIterator* kbt) if (!in_kernel_stack(kbt, sp + C_ABI_SAVE_AREA_SIZE + PTREGS_SIZE-1)) return NULL; p = (struct pt_regs *)(sp + C_ABI_SAVE_AREA_SIZE); - if (p->faultnum == INT_SWINT_1 || p->faultnum == INT_SWINT_1_SIGRETURN) - fault = "syscall"; - else { - if (kbt->verbose) { /* else we aren't going to use it */ - snprintf(fault_buf, sizeof(fault_buf), + if (kbt->verbose) { /* else we aren't going to use it */ + if (p->faultnum == INT_SWINT_1 || + p->faultnum == INT_SWINT_1_SIGRETURN) + snprintf(fault, sizeof(fault), + "syscall %ld", p->regs[TREG_SYSCALL_NR]); + else + snprintf(fault, sizeof(fault), "interrupt %ld", p->faultnum); - fault = fault_buf; - } } if (EX1_PL(p->ex1) == KERNEL_PL && __kernel_text_address(p->pc) && |