projects
/
linux-drm-fsl-dcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MIPS: Set trap_no field in thread_struct on exception.
[linux-drm-fsl-dcu.git]
/
arch
/
mips
/
mm
/
fault.c
diff --git
a/arch/mips/mm/fault.c
b/arch/mips/mm/fault.c
index 852a41c6da4507080d611dce0b1fc206caf30556..4b88fa031891d474c715db30479218e8216aa948 100644
(file)
--- a/
arch/mips/mm/fault.c
+++ b/
arch/mips/mm/fault.c
@@
-57,12
+57,10
@@
static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write,
#ifdef CONFIG_KPROBES
/*
#ifdef CONFIG_KPROBES
/*
- * This is to notify the fault handler of the kprobes. The
- * exception code is redundant as it is also carried in REGS,
- * but we pass it anyhow.
+ * This is to notify the fault handler of the kprobes.
*/
if (notify_die(DIE_PAGE_FAULT, "page fault", regs, -1,
*/
if (notify_die(DIE_PAGE_FAULT, "page fault", regs, -1,
-
(regs->cp0_cause >> 2) & 0x1f
, SIGSEGV) == NOTIFY_STOP)
+
current->thread.trap_nr
, SIGSEGV) == NOTIFY_STOP)
return;
#endif
return;
#endif
@@
-224,6
+222,7
@@
bad_area_nosemaphore:
print_vma_addr(" ", regs->regs[31]);
pr_info("\n");
}
print_vma_addr(" ", regs->regs[31]);
pr_info("\n");
}
+ current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
info.si_signo = SIGSEGV;
info.si_errno = 0;
/* info.si_code has been set above */
info.si_signo = SIGSEGV;
info.si_errno = 0;
/* info.si_code has been set above */
@@
-282,6
+281,7
@@
do_sigbus:
field, (unsigned long) regs->cp0_epc,
field, (unsigned long) regs->regs[31]);
#endif
field, (unsigned long) regs->cp0_epc,
field, (unsigned long) regs->regs[31]);
#endif
+ current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
tsk->thread.cp0_badvaddr = address;
info.si_signo = SIGBUS;
info.si_errno = 0;
tsk->thread.cp0_badvaddr = address;
info.si_signo = SIGBUS;
info.si_errno = 0;