From 6faf789314aff183d128dc5436eb4278ebd4fc11 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 26 Feb 2014 15:45:02 +0100 Subject: bsps: Fix empty interrupt handler entry The vector number of spurious interrupts was wrong after the interrupt handler removal on SMP configurations. --- c/src/lib/libbsp/shared/src/irq-generic.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'c/src/lib/libbsp') diff --git a/c/src/lib/libbsp/shared/src/irq-generic.c b/c/src/lib/libbsp/shared/src/irq-generic.c index f31b397032..610fe40d8e 100644 --- a/c/src/lib/libbsp/shared/src/irq-generic.c +++ b/c/src/lib/libbsp/shared/src/irq-generic.c @@ -88,11 +88,12 @@ static inline bool bsp_interrupt_is_empty_handler_entry( } static inline void bsp_interrupt_clear_handler_entry( - bsp_interrupt_handler_entry *e + bsp_interrupt_handler_entry *e, + rtems_vector_number vector ) { e->handler = bsp_interrupt_handler_empty; - e->arg = NULL; + e->arg = (void *) vector; e->info = NULL; e->next = NULL; } @@ -138,7 +139,7 @@ static bsp_interrupt_handler_entry *bsp_interrupt_allocate_handler_entry(void) static void bsp_interrupt_free_handler_entry(bsp_interrupt_handler_entry *e) { #ifdef BSP_INTERRUPT_NO_HEAP_USAGE - bsp_interrupt_clear_handler_entry(e); + bsp_interrupt_clear_handler_entry(e, 0); #else free(e); #endif @@ -404,7 +405,7 @@ static rtems_status_code bsp_interrupt_handler_remove( /* Clear entry */ rtems_interrupt_disable(level); - bsp_interrupt_clear_handler_entry(head); + bsp_interrupt_clear_handler_entry(head, vector); #ifdef BSP_INTERRUPT_USE_INDEX_TABLE bsp_interrupt_handler_index_table [vector] = 0; #endif -- cgit v1.2.3