summaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/asm-offsets.c
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2009-06-22 04:02:16 +0200
committerMike Frysinger <vapier@gentoo.org>2009-09-17 03:28:28 +0200
commitae4f073c40bf677b03826262e6022b4a251fe437 (patch)
tree452c91be30a3970efbea5780d368945e7f63712c /arch/blackfin/kernel/asm-offsets.c
parentBlackfin: bf537-stamp: add resources for AD1938 audio card (diff)
downloadlinux-ae4f073c40bf677b03826262e6022b4a251fe437.tar.xz
linux-ae4f073c40bf677b03826262e6022b4a251fe437.zip
Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4]
We handle many exceptions at EVT5 (hardware error level) so that we can catch exceptions in our exception handling code. Today - if the global interrupt enable bit (IPEND[4]) is set (interrupts disabled) our trap handling code goes into a infinite loop, since we need interrupts to be on to defer things to EVT5. Normal kernel code should not trigger this for any reason as IPEND[4] gets cleared early (when doing an interrupt context save) and the kernel stack there should be sane (or something much worse is happening in the system). But there have been a few times where this has happened, so this change makes sure we dump a proper crash message even when things have gone south. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel/asm-offsets.c')
-rw-r--r--arch/blackfin/kernel/asm-offsets.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/asm-offsets.c b/arch/blackfin/kernel/asm-offsets.c
index b5df9459d6d5..8ad4f2c69961 100644
--- a/arch/blackfin/kernel/asm-offsets.c
+++ b/arch/blackfin/kernel/asm-offsets.c
@@ -145,6 +145,7 @@ int main(void)
DEFINE(PDA_EXBUF, offsetof(struct blackfin_pda, ex_buf));
DEFINE(PDA_EXIMASK, offsetof(struct blackfin_pda, ex_imask));
DEFINE(PDA_EXSTACK, offsetof(struct blackfin_pda, ex_stack));
+ DEFINE(PDA_EXIPEND, offsetof(struct blackfin_pda, ex_ipend));
#ifdef ANOMALY_05000261
DEFINE(PDA_LFRETX, offsetof(struct blackfin_pda, last_cplb_fault_retx));
#endif