summaryrefslogtreecommitdiff
path: root/c/src/lib/libbsp/arm/xm-tms570/irq/irq.c
diff options
context:
space:
mode:
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.c52
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;
+}