aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2009-06-03 14:58:26 -0400
committerMike Frysinger <vapier@gentoo.org>2009-06-12 06:15:28 -0400
commit81f7f45606812f1d15d618c2646d0f33ca111f87 (patch)
tree5b105be6f9b8bcac9172690ffc62d02ad8199391 /arch/blackfin/kernel
parent0a990614264f04879d9608da1cfcf9a6596efe08 (diff)
Blackfin: export the last exception cause via debugfs
We have some test code that runs in userspace that exercises the exception handling of the Blackfin pretty thoroughly. Part of the validation process is checking the exact exception triggered, so export the last one seen to userspace via debugfs when debugging is enabled for the test code to check. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel')
-rw-r--r--arch/blackfin/kernel/traps.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index 35f675f5ca16..63ccb283acdc 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -68,6 +68,13 @@
68 ({ if (0) printk(fmt, ##arg); 0; }) 68 ({ if (0) printk(fmt, ##arg); 0; })
69#endif 69#endif
70 70
71#if defined(CONFIG_DEBUG_MMRS) || defined(CONFIG_DEBUG_MMRS_MODULE)
72u32 last_seqstat;
73#ifdef CONFIG_DEBUG_MMRS_MODULE
74EXPORT_SYMBOL(last_seqstat);
75#endif
76#endif
77
71/* Initiate the event table handler */ 78/* Initiate the event table handler */
72void __init trap_init(void) 79void __init trap_init(void)
73{ 80{
@@ -245,6 +252,9 @@ asmlinkage void trap_c(struct pt_regs *fp)
245 unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE; 252 unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE;
246 253
247 trace_buffer_save(j); 254 trace_buffer_save(j);
255#if defined(CONFIG_DEBUG_MMRS) || defined(CONFIG_DEBUG_MMRS_MODULE)
256 last_seqstat = (u32)fp->seqstat;
257#endif
248 258
249 /* Important - be very careful dereferncing pointers - will lead to 259 /* Important - be very careful dereferncing pointers - will lead to
250 * double faults if the stack has become corrupt 260 * double faults if the stack has become corrupt