summaryrefslogtreecommitdiff
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)
66 offset >= 0 ? avic_int_names[offset] : "<Unknown>"); 66 offset >= 0 ? avic_int_names[offset] : "<Unknown>");
67} 67}
68 68
69#if 0
69/* We use the AVIC */ 70/* We use the AVIC */
70void __attribute__((interrupt("IRQ"))) irq_handler(void) 71void __attribute__((interrupt("IRQ"))) irq_handler(void)
71{ 72{
@@ -85,6 +86,7 @@ void __attribute__((interrupt("IRQ"))) irq_handler(void)
85 panicf("Unhandled IRQ %d in irq_handler: %s", offset, 86 panicf("Unhandled IRQ %d in irq_handler: %s", offset,
86 offset >= 0 ? avic_int_names[offset] : "<Unknown>"); 87 offset >= 0 ? avic_int_names[offset] : "<Unknown>");
87} 88}
89#endif /* 0 */
88 90
89/* Accoring to section 9.3.5 of the UM, the AVIC doesn't accelerate 91/* Accoring to section 9.3.5 of the UM, the AVIC doesn't accelerate
90 * fast interrupts and they must be dispatched */ 92 * 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:
32 b prefetch_abort_handler 32 b prefetch_abort_handler
33 b data_abort_handler 33 b data_abort_handler
34 b reserved_handler 34 b reserved_handler
35 b irq_handler 35 subs pc, lr, #4 @ b irq_handler
36 b fiq_handler 36 b fiq_handler
37 .balign 0x40, 0x6B 37 .balign 0x40, 0x6B
38 38
@@ -322,7 +322,7 @@ remap_end:
322 ldr pc, [pc, #24] 322 ldr pc, [pc, #24]
323 ldr pc, [pc, #24] 323 ldr pc, [pc, #24]
324 ldr pc, [pc, #24] 324 ldr pc, [pc, #24]
325 ldr pc, [pc, #24] 325 subs pc, lr, #4 @ ldr pc, [pc, #24]
326 ldr pc, [pc, #24] 326 ldr pc, [pc, #24]
327 .word newstart 327 .word newstart
328 .word undef_instr_handler 328 .word undef_instr_handler
@@ -330,7 +330,7 @@ remap_end:
330 .word prefetch_abort_handler 330 .word prefetch_abort_handler
331 .word data_abort_handler 331 .word data_abort_handler
332 .word reserved_handler 332 .word reserved_handler
333 .word irq_handler 333 .word 0 @ irq_handler
334 .word fiq_handler 334 .word fiq_handler
335#endif /* BOOTLOADER */ 335#endif /* BOOTLOADER */
336 336