diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-26 15:45:02 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-28 08:59:01 +0100 |
commit | 6faf789314aff183d128dc5436eb4278ebd4fc11 (patch) | |
tree | 2f0fb2631fc7f2bb751bf0d20894aaac9a14c03a /c | |
parent | sptests/spcache01: New test (diff) | |
download | rtems-6faf789314aff183d128dc5436eb4278ebd4fc11.tar.bz2 |
bsps: Fix empty interrupt handler entry
The vector number of spurious interrupts was wrong after the interrupt
handler removal on SMP configurations.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/shared/src/irq-generic.c | 9 |
1 files changed, 5 insertions, 4 deletions
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 |