summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2010-05-03 07:48:00 +0000
committerMichael Sevakis <jethead71@rockbox.org>2010-05-03 07:48:00 +0000
commitb3f1eb8bbafdac59f2f532adaae97debbcf48a9b (patch)
tree512da535bd61496651d33936b12d916a6769799b
parentbc90a616c3f1425c75289a9f1d4d9f1170af33a2 (diff)
downloadrockbox-b3f1eb8bbafdac59f2f532adaae97debbcf48a9b.tar.gz
rockbox-b3f1eb8bbafdac59f2f532adaae97debbcf48a9b.zip
Gigabeat S: Those odd calls to irq_handler can still happen rarely after executing WFI. With no explanation forthcoming after trying many things, hide head in sand and ignore them and the IRQ will get vectored to the correct handler anyway. Have vector tables execute an immediate return and remove irq_handler from compilation altogether.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25792 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/imx31/avic-imx31.c2
-rw-r--r--firmware/target/arm/imx31/crt0.S6
2 files changed, 5 insertions, 3 deletions
diff --git a/firmware/target/arm/imx31/avic-imx31.c b/firmware/target/arm/imx31/avic-imx31.c
index c8bf419bcd..51ba14d0b3 100644
--- a/firmware/target/arm/imx31/avic-imx31.c
+++ b/firmware/target/arm/imx31/avic-imx31.c
@@ -66,6 +66,7 @@ void UIE_VECTOR(void)
offset >= 0 ? avic_int_names[offset] : "<Unknown>");
}
+#if 0
/* We use the AVIC */
void __attribute__((interrupt("IRQ"))) irq_handler(void)
{
@@ -85,6 +86,7 @@ void __attribute__((interrupt("IRQ"))) irq_handler(void)
panicf("Unhandled IRQ %d in irq_handler: %s", offset,
offset >= 0 ? avic_int_names[offset] : "<Unknown>");
}
+#endif /* 0 */
/* Accoring to section 9.3.5 of the UM, the AVIC doesn't accelerate
* fast interrupts and they must be dispatched */
diff --git a/firmware/target/arm/imx31/crt0.S b/firmware/target/arm/imx31/crt0.S
index 0841cb9276..3a0a0041d4 100644
--- a/firmware/target/arm/imx31/crt0.S
+++ b/firmware/target/arm/imx31/crt0.S
@@ -32,7 +32,7 @@ start:
b prefetch_abort_handler
b data_abort_handler
b reserved_handler
- b irq_handler
+ subs pc, lr, #4 @ b irq_handler
b fiq_handler
.balign 0x40, 0x6B
@@ -322,7 +322,7 @@ remap_end:
ldr pc, [pc, #24]
ldr pc, [pc, #24]
ldr pc, [pc, #24]
- ldr pc, [pc, #24]
+ subs pc, lr, #4 @ ldr pc, [pc, #24]
ldr pc, [pc, #24]
.word newstart
.word undef_instr_handler
@@ -330,7 +330,7 @@ remap_end:
.word prefetch_abort_handler
.word data_abort_handler
.word reserved_handler
- .word irq_handler
+ .word 0 @ irq_handler
.word fiq_handler
#endif /* BOOTLOADER */