summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-03-26 18:12:22 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-07 18:31:06 +0200
commitf0d66b1ba972a13d8942b1030c2affcbedc005fe (patch)
tree5c5f05313d5db1ad57684b98c7bfaf180ca41945
parentGRETH: use shared-irq service instead of BSP specific set_vec() (diff)
downloadrtems-f0d66b1ba972a13d8942b1030c2affcbedc005fe.tar.bz2
arm: New function
Add and use function _ARMV7M_Set_exception_priority_and_handler(). Use ARMV7M_EXCEPTION_PRIORITY_LOWEST define.
-rw-r--r--cpukit/score/cpu/arm/Makefile.am1
-rw-r--r--cpukit/score/cpu/arm/armv7m-exception-priority-handler.c35
-rw-r--r--cpukit/score/cpu/arm/armv7m-initialize.c8
-rw-r--r--cpukit/score/cpu/arm/rtems/score/armv7m.h6
4 files changed, 46 insertions, 4 deletions
diff --git a/cpukit/score/cpu/arm/Makefile.am b/cpukit/score/cpu/arm/Makefile.am
index 9043622c51..61210cb467 100644
--- a/cpukit/score/cpu/arm/Makefile.am
+++ b/cpukit/score/cpu/arm/Makefile.am
@@ -27,6 +27,7 @@ libscorecpu_a_SOURCES += armv7m-context-switch.c
libscorecpu_a_SOURCES += armv7m-exception-handler-get.c
libscorecpu_a_SOURCES += armv7m-exception-handler-set.c
libscorecpu_a_SOURCES += armv7m-exception-priority-get.c
+libscorecpu_a_SOURCES += armv7m-exception-priority-handler.c
libscorecpu_a_SOURCES += armv7m-exception-priority-set.c
libscorecpu_a_SOURCES += armv7m-initialize.c
libscorecpu_a_SOURCES += armv7m-isr-dispatch.c
diff --git a/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c b/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c
new file mode 100644
index 0000000000..726db75e20
--- /dev/null
+++ b/cpukit/score/cpu/arm/armv7m-exception-priority-handler.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2012 Sebastian Huber. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <rtems/score/cpu.h>
+
+#ifdef ARM_MULTILIB_ARCH_V7M
+
+#include <rtems/score/armv7m.h>
+
+void _ARMV7M_Set_exception_priority_and_handler(
+ int index,
+ int priority,
+ ARMV7M_Exception_handler handler
+)
+{
+ _ARMV7M_Set_exception_priority( index, priority );
+ _ARMV7M_Set_exception_handler( index, handler );
+}
+
+#endif /* ARM_MULTILIB_ARCH_V7M */
diff --git a/cpukit/score/cpu/arm/armv7m-initialize.c b/cpukit/score/cpu/arm/armv7m-initialize.c
index f8e652d84d..79647d1ad6 100644
--- a/cpukit/score/cpu/arm/armv7m-initialize.c
+++ b/cpukit/score/cpu/arm/armv7m-initialize.c
@@ -31,14 +31,14 @@ void _CPU_Initialize( void )
* also "ARMv7-M Architecture Reference Manual, Issue D" section B1.5.4
* "Exception priorities and preemption".
*/
- _ARMV7M_Set_exception_priority( ARMV7M_VECTOR_SVC, 0xff );
- _ARMV7M_Set_exception_priority( ARMV7M_VECTOR_PENDSV, 0xff );
- _ARMV7M_Set_exception_handler(
+ _ARMV7M_Set_exception_priority_and_handler(
ARMV7M_VECTOR_SVC,
+ ARMV7M_EXCEPTION_PRIORITY_LOWEST,
_ARMV7M_Supervisor_call
);
- _ARMV7M_Set_exception_handler(
+ _ARMV7M_Set_exception_priority_and_handler(
ARMV7M_VECTOR_PENDSV,
+ ARMV7M_EXCEPTION_PRIORITY_LOWEST,
_ARMV7M_Pendable_service_call
);
}
diff --git a/cpukit/score/cpu/arm/rtems/score/armv7m.h b/cpukit/score/cpu/arm/rtems/score/armv7m.h
index 936c452045..a4bae3ce5b 100644
--- a/cpukit/score/cpu/arm/rtems/score/armv7m.h
+++ b/cpukit/score/cpu/arm/rtems/score/armv7m.h
@@ -459,6 +459,12 @@ void _ARMV7M_Set_exception_handler(
ARMV7M_Exception_handler handler
);
+void _ARMV7M_Set_exception_priority_and_handler(
+ int index,
+ int priority,
+ ARMV7M_Exception_handler handler
+);
+
void _ARMV7M_Interrupt_service_enter( void );
void _ARMV7M_Interrupt_service_leave( void );