Blackfin: make EVT3->EVT5 lowering more robust wrt IPEND[4]
authorRobin Getz <robin.getz@analog.com>
Mon, 22 Jun 2009 02:02:16 +0000 (02:02 +0000)
committerMike Frysinger <vapier@gentoo.org>
Thu, 17 Sep 2009 01:28:28 +0000 (21:28 -0400)
commitae4f073c40bf677b03826262e6022b4a251fe437
tree452c91be30a3970efbea5780d368945e7f63712c
parentd4b834c13940b5433d16ae3605794b3d74804348
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>
arch/blackfin/include/asm/pda.h
arch/blackfin/kernel/asm-offsets.c
arch/blackfin/kernel/traps.c
arch/blackfin/mach-common/entry.S