aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-mxc/avic.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-mxc/avic.c')
-rw-r--r--arch/arm/plat-mxc/avic.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/arm/plat-mxc/avic.c b/arch/arm/plat-mxc/avic.c
index 846636a29bd3..8875fb415f68 100644
--- a/arch/arm/plat-mxc/avic.c
+++ b/arch/arm/plat-mxc/avic.c
@@ -102,7 +102,6 @@ static struct mxc_extra_irq avic_extra_irq = {
#endif
};
-
#ifdef CONFIG_PM
static void avic_irq_suspend(struct irq_data *d)
{
@@ -152,6 +151,19 @@ static __init void avic_init_gc(unsigned int irq_start)
irq_setup_generic_chip(gc, IRQ_MSK(32), 0, IRQ_NOREQUEST, 0);
}
+asmlinkage void __exception_irq_entry avic_handle_irq(struct pt_regs *regs)
+{
+ u32 nivector;
+
+ do {
+ nivector = __raw_readl(avic_base + AVIC_NIVECSR) >> 16;
+ if (nivector == 0xffff)
+ break;
+
+ handle_IRQ(nivector, regs);
+ } while (1);
+}
+
/*
* This function initializes the AVIC hardware and disables all the
* interrupts. It registers the interrupt enable and disable functions