[rtems commit] bsp/lpc32xx: Fix interrupt controller suppport
Sebastian Huber
sebh at rtems.org
Tue Jan 24 06:10:12 UTC 2017
Module: rtems
Branch: master
Commit: 2f8f951b42ce7a6a2e23bc126f7d26578cade089
Changeset: http://git.rtems.org/rtems/commit/?id=2f8f951b42ce7a6a2e23bc126f7d26578cade089
Author: Kevin Kirspel <kevin-kirspel at idexx.com>
Date: Mon Jan 23 08:51:27 2017 -0500
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(-)
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 77a0c19..37080f4
--- 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;
}
More information about the vc
mailing list