diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/xm-tms570/irq/irq.c')
-rw-r--r-- | c/src/lib/libbsp/arm/xm-tms570/irq/irq.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/xm-tms570/irq/irq.c b/c/src/lib/libbsp/arm/xm-tms570/irq/irq.c new file mode 100644 index 0000000000..71d890737c --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/irq/irq.c @@ -0,0 +1,52 @@ +/* + * @file irq.c + * + * @author Miguel Masmano <mmasmano@fentiss.com> + * + * @copyright + * Copyright 2016 Fent Innovative Software Solutions (FENTISS). + * All rights reserved. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include <bsp/irq-generic.h> +#include <bsp/irq.h> +#include <rtems/score/armv4.h> +#include <xm.h> + +void bsp_interrupt_dispatch(void) +{ + rtems_vector_number vector =XM_params_get_PCT()->irqIndex; + + bsp_interrupt_handler_dispatch(vector); +} + +void bsp_interrupt_vector_enable(rtems_vector_number vector) +{ + bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); + + if ((vector >= 0) && (vector < 96)) { + XM_clear_irqmask(1<<vector, 0); + } else if ((vector>=96)&&(vector<(96+32))) { + XM_clear_irqmask(0, 1<<(vector-96)); + } +} + +void bsp_interrupt_vector_disable(rtems_vector_number vector) +{ + bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector)); + + if ((vector >= 0) && (vector < 96)) { + XM_set_irqmask(1<<vector, 0); + } else if ((vector>=96)&&(vector<(96+32))) { + XM_set_irqmask(0, 1<<(vector-96)); + } +} + +rtems_status_code bsp_interrupt_facility_initialize(void) +{ + XM_set_irqmask(~0, ~0); + return RTEMS_SUCCESSFUL; +} |