1
0
Fork 0
forked from len0rd/rockbox

IMX31: Try to catch the interrupt that was the reason irq_handler was called since it never should be. The bootloader occasionally shows one but it's not saying what.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17271 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sevakis 2008-04-27 22:01:25 +00:00
parent 88451d59c4
commit 39ed7087b3

View file

@ -46,7 +46,7 @@ static const char * avic_int_names[64] =
void UIE_VECTOR(void)
{
int mode;
long offset;
int offset;
asm volatile (
"mrs %0, cpsr \n" /* Mask core IRQ/FIQ */
@ -56,9 +56,10 @@ void UIE_VECTOR(void)
: "=&r"(mode)
);
offset = mode == 0x11 ? (long)FIVECSR : ((long)NIVECSR >> 16);
offset = mode == 0x11 ?
(int32_t)FIVECSR : ((int32_t)NIVECSR >> 16);
panicf("Unhandled %s %ld: %s",
panicf("Unhandled %s %d: %s",
mode == 0x11 ? "FIQ" : "IRQ", offset,
offset >= 0 ? avic_int_names[offset] : "<Unknown>");
}
@ -66,7 +67,10 @@ void UIE_VECTOR(void)
/* We use the AVIC */
void __attribute__((naked)) irq_handler(void)
{
panicf("Unhandled IRQ in irq_handler");
const int offset = (int32_t)NIVECSR >> 16;
disable_interrupt(IRQ_FIQ_STATUS);
panicf("Unhandled IRQ %d in irq_handler: %s", offset,
offset >= 0 ? avic_int_names[offset] : "<Unknown>");
}
/* Accoring to section 9.3.5 of the UM, the AVIC doesn't accelerate