changeset 1335:564441705fa6

2003-10-23 Thomas Koeller <thomas.koeller@baslerweb.com> * src/at91_misc.c: Fixed recognition of spurious interrupts.
author nickg
date Tue, 28 Oct 2003 18:09:07 +0000
parents 8758da1a0278
children 4abdcd2f65a9
files packages/hal/arm/at91/var/current/ChangeLog packages/hal/arm/at91/var/current/src/at91_misc.c
diffstat 2 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/arm/at91/var/current/ChangeLog
+++ b/packages/hal/arm/at91/var/current/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-23  Thomas Koeller  <thomas.koeller@baslerweb.com>
+
+	* src/at91_misc.c: Fixed recognition of spurious
+	interrupts.
+	
 2003-08-21  Thomas Koeller  <thomas.koeller@baslerweb.com>
 
         * include/var_io.h:
--- a/packages/hal/arm/at91/var/current/src/at91_misc.c
+++ b/packages/hal/arm/at91/var/current/src/at91_misc.c
@@ -184,6 +184,10 @@ int hal_IRQ_handler(void)
     HAL_READ_UINT32(AT91_AIC+AT91_AIC_IVR, ivr);
 
     HAL_READ_UINT32(AT91_AIC+AT91_AIC_ISR, irq_num);
+
+    // No valid interrrupt source, treat as spurious interrupt    
+    if (irq_num < CYGNUM_HAL_ISR_MIN || irq_num > CYGNUM_HAL_ISR_MAX)
+      irq_num = CYGNUM_HAL_INTERRUPT_NONE;
     
     return irq_num;
 }
@@ -210,9 +214,8 @@ void hal_interrupt_unmask(int vector)
 
 void hal_interrupt_acknowledge(int vector)
 {
-    CYG_ASSERT(vector <= CYGNUM_HAL_ISR_MAX &&
-               vector >= CYGNUM_HAL_ISR_MIN , "Invalid vector");
-
+    // No check for valid vector here! Spurious interrupts
+    // must be acknowledged, too.
     HAL_WRITE_UINT32(AT91_AIC+AT91_AIC_EOI, 0xFFFFFFFF);  
 }