[U-Boot] [PATCH] microblaze: avoid interrupt race conditions
Stephan Linz
linz at li-pro.net
Fri Feb 17 23:11:07 CET 2012
The interrupt acknowledge action have to run after the
registered interrupt handler. So we have a chance to
bear out the corresponding interrupt request in the
corresponding controller hardware.
With this reorderng, we optain a proper interrupt
handling for level triggerd interrupt sources -- for
example the new axi_timer v1.02.a introduced in ISE 13.2
Signed-off-by: Stephan Linz <linz at li-pro.net>
---
arch/microblaze/cpu/interrupts.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c
index 5a13211..e7ca859 100644
--- a/arch/microblaze/cpu/interrupts.c
+++ b/arch/microblaze/cpu/interrupts.c
@@ -155,8 +155,6 @@ void interrupt_handler (void)
#endif
struct irq_action *act = vecs + irqs;
- intc->iar = mask << irqs;
-
#ifdef DEBUG_INT
printf
("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n",
@@ -165,6 +163,8 @@ void interrupt_handler (void)
act->handler (act->arg);
act->count++;
+ intc->iar = mask << irqs;
+
#ifdef DEBUG_INT
printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr,
intc->ier, intc->iar, intc->mer);
--
1.7.0.4
More information about the U-Boot
mailing list