Skip to content

Commit

Permalink
tile: include the syscall number in the backtrace
Browse files Browse the repository at this point in the history
This information is easily available in the backtrace data and can
be helpful when trying to figure out the backtrace, particularly
if we're early in kernel entry or late in kernel exit.

Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
  • Loading branch information
Chris Metcalf committed Jan 18, 2016
1 parent 7fa129c commit 5ac65ab
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions arch/tile/kernel/stack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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) &&
Expand Down

0 comments on commit 5ac65ab

Please sign in to comment.