summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-26 15:45:02 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-02-28 08:59:01 +0100
commit6faf789314aff183d128dc5436eb4278ebd4fc11 (patch)
tree2f0fb2631fc7f2bb751bf0d20894aaac9a14c03a /c
parentsptests/spcache01: New test (diff)
downloadrtems-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.c9
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