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 | 57 |
1 files changed, 57 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..3e2e74cb79 --- /dev/null +++ b/c/src/lib/libbsp/arm/xm-tms570/irq/irq.c @@ -0,0 +1,57 @@ +/* + * @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 <xm.h> + +void bsp_interrupt_dispatch(void) +{ + rtems_vector_number vector =XM_params_get_PCT()->irqIndex; + + bsp_interrupt_handler_dispatch(vector); +} + +rtems_status_code bsp_interrupt_vector_enable( + rtems_vector_number 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)); + } else { + return RTEMS_INVALID_ID; + } + return RTEMS_SUCCESSFUL; +} + +rtems_status_code bsp_interrupt_vector_disable( + rtems_vector_number 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)); + } else { + return RTEMS_INVALID_ID; + } + return RTEMS_SUCCESSFUL; +} + +rtems_status_code bsp_interrupt_facility_initialize(void) +{ + XM_set_irqmask(~0, ~0); + return RTEMS_SUCCESSFUL; +} |