Index: at91_misc.c =================================================================== RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/var/current/src/at91_misc.c,v retrieving revision 1.8 diff -u -5 -p -r1.8 at91_misc.c --- at91_misc.c 12 Aug 2004 13:02:24 -0000 1.8 +++ at91_misc.c 14 Sep 2004 09:35:58 -0000 @@ -177,11 +177,18 @@ void hal_hardware_init(void) // should interrogate the hardware and return the IRQ vector number. int hal_IRQ_handler(void) { cyg_uint32 irq_num; - cyg_uint32 ivr; + cyg_uint32 ivr,ipr,imr; + HAL_READ_UINT32(AT91_AIC+AT91_AIC_IPR, ipr); + HAL_READ_UINT32(AT91_AIC+AT91_AIC_IMR, imr); + + if(imr&ipr&0x1){ + HAL_WRITE_UINT32(AT91_AIC+AT91_AIC_ICCR, 1); // we must clean pending fiq + return 0; + } // Calculate active interrupt (updates ISR) HAL_READ_UINT32(AT91_AIC+AT91_AIC_IVR, ivr); HAL_READ_UINT32(AT91_AIC+AT91_AIC_ISR, irq_num);