diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-06-19 14:09:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-06-20 07:42:25 +0200 |
commit | c6810c824c9445fdc44ae5c0092f9ae5355a1420 (patch) | |
tree | 72441065d38fefdef1008118d9bf51bebf71ad05 /c/src/lib/libbsp/m68k | |
parent | bsps/powerpc: Fix warning (diff) | |
download | rtems-c6810c824c9445fdc44ae5c0092f9ae5355a1420.tar.bz2 |
bsps: Improve interrupt vector enable/disable API
Change bsp_interrupt_vector_enable() and bsp_interrupt_vector_disable()
to not return a status code. Add bsp_interrupt_assert() and use it to
validate the vector number in the vector enable/disable implementations.
Diffstat (limited to 'c/src/lib/libbsp/m68k')
-rw-r--r-- | c/src/lib/libbsp/m68k/genmcf548x/irq/irq.c | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/irq/irq.c b/c/src/lib/libbsp/m68k/genmcf548x/irq/irq.c index 58e904426a..f02231b67c 100644 --- a/c/src/lib/libbsp/m68k/genmcf548x/irq/irq.c +++ b/c/src/lib/libbsp/m68k/genmcf548x/irq/irq.c @@ -59,42 +59,30 @@ static rtems_vector_number vector_to_exception_vector( return vector + 64U; } -rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector) +void bsp_interrupt_vector_enable(rtems_vector_number vector) { - rtems_status_code sc = RTEMS_SUCCESSFUL; + volatile uint32_t *imr = vector_to_imr(vector); + uint32_t bit = vector_to_bit(vector); + rtems_interrupt_level level; - if (bsp_interrupt_is_valid_vector(vector)) { - volatile uint32_t *imr = vector_to_imr(vector); - uint32_t bit = vector_to_bit(vector); - rtems_interrupt_level level; - - rtems_interrupt_disable(level); - *imr &= ~bit; - rtems_interrupt_enable(level); - } else { - sc = RTEMS_INVALID_ID; - } + bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); - return sc; + rtems_interrupt_disable(level); + *imr &= ~bit; + rtems_interrupt_enable(level); } -rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector) +void bsp_interrupt_vector_disable(rtems_vector_number vector) { - rtems_status_code sc = RTEMS_SUCCESSFUL; + volatile uint32_t *imr = vector_to_imr(vector); + uint32_t bit = vector_to_bit(vector); + rtems_interrupt_level level; - if (bsp_interrupt_is_valid_vector(vector)) { - volatile uint32_t *imr = vector_to_imr(vector); - uint32_t bit = vector_to_bit(vector); - rtems_interrupt_level level; - - rtems_interrupt_disable(level); - *imr |= bit; - rtems_interrupt_enable(level); - } else { - sc = RTEMS_INVALID_ID; - } + bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); - return sc; + rtems_interrupt_disable(level); + *imr |= bit; + rtems_interrupt_enable(level); } static void_func get_exception_handler(rtems_vector_number vector) |