From 2f8f951b42ce7a6a2e23bc126f7d26578cade089 Mon Sep 17 00:00:00 2001 From: Kevin Kirspel Date: Mon, 23 Jan 2017 08:51:27 -0500 Subject: bsp/lpc32xx: Fix interrupt controller suppport Enable/Disable vector routines now check for a valid vector. Without these guards, the Enable/Disable vector routines will not work with the interrupt server. --- c/src/lib/libbsp/arm/lpc32xx/irq/irq.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) mode change 100644 => 100755 c/src/lib/libbsp/arm/lpc32xx/irq/irq.c diff --git a/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c b/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c old mode 100644 new mode 100755 index 77a0c19b3a..37080f4de2 --- a/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c +++ b/c/src/lib/libbsp/arm/lpc32xx/irq/irq.c @@ -267,24 +267,28 @@ void bsp_interrupt_dispatch(void) rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector) { - rtems_interrupt_level level; + if (lpc32xx_irq_is_valid(vector)) { + rtems_interrupt_level level; - rtems_interrupt_disable(level); - lpc32xx_irq_set_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER); - lpc32xx_irq_set_bit_in_field(vector, &lpc32xx_irq_enable); - rtems_interrupt_enable(level); + rtems_interrupt_disable(level); + lpc32xx_irq_set_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER); + lpc32xx_irq_set_bit_in_field(vector, &lpc32xx_irq_enable); + rtems_interrupt_enable(level); + } return RTEMS_SUCCESSFUL; } rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector) { - rtems_interrupt_level level; + if (lpc32xx_irq_is_valid(vector)) { + rtems_interrupt_level level; - rtems_interrupt_disable(level); - lpc32xx_irq_clear_bit_in_field(vector, &lpc32xx_irq_enable); - lpc32xx_irq_clear_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER); - rtems_interrupt_enable(level); + rtems_interrupt_disable(level); + lpc32xx_irq_clear_bit_in_field(vector, &lpc32xx_irq_enable); + lpc32xx_irq_clear_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER); + rtems_interrupt_enable(level); + } return RTEMS_SUCCESSFUL; } -- cgit v1.2.3