diff options
Diffstat (limited to 'arch/sh/kernel/traps_32.c')
-rw-r--r-- | arch/sh/kernel/traps_32.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index 3484c2f65ab..5abd87752eb 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c @@ -27,6 +27,7 @@ #include <linux/sysfs.h> #include <linux/uaccess.h> #include <linux/perf_event.h> +#include <trace/trap.h> #include <asm/system.h> #include <asm/alignment.h> #include <asm/fpu.h> @@ -47,6 +48,9 @@ #define TRAP_ILLEGAL_SLOT_INST 13 #endif +DEFINE_TRACE(trap_entry); +DEFINE_TRACE(trap_exit); + static void dump_mem(const char *str, unsigned long bottom, unsigned long top) { unsigned long p; @@ -545,6 +549,8 @@ asmlinkage void do_address_error(struct pt_regs *regs, error_code = lookup_exception_vector(); #endif + trace_trap_entry(regs, error_code >> 5); + oldfs = get_fs(); if (user_mode(regs)) { @@ -589,8 +595,10 @@ fixup: address); set_fs(oldfs); - if (tmp == 0) + if (!tmp) { + trace_trap_exit(); return; /* sorted */ + } uspace_segv: printk(KERN_NOTICE "Sending SIGBUS to \"%s\" due to unaligned " "access (PC %lx PR %lx)\n", current->comm, regs->pc, @@ -623,6 +631,7 @@ uspace_segv: 0, address); set_fs(oldfs); } + trace_trap_exit(); } #ifdef CONFIG_SH_DSP |