[rtems commit] arm: New function

Sebastian Huber sebh at rtems.org
Mon Jul 9 08:39:10 UTC 2012


Module:    rtems
Branch:    master
Commit:    ca1ce3c2a422a78f115be3f81d2f4b1ce5a1697a
Changeset: http://git.rtems.org/rtems/commit/?id=ca1ce3c2a422a78f115be3f81d2f4b1ce5a1697a

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Mar 26 18:12:22 2012 +0200

arm: New function

Add and use function _ARMV7M_Set_exception_priority_and_handler().  Use
ARMV7M_EXCEPTION_PRIORITY_LOWEST define.

---

 cpukit/score/cpu/arm/Makefile.am                   |    1 +
 .../cpu/arm/armv7m-exception-priority-handler.c    |   35 ++++++++++++++++++++
 cpukit/score/cpu/arm/armv7m-initialize.c           |    8 ++--
 cpukit/score/cpu/arm/rtems/score/armv7m.h          |    6 +++
 4 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/cpukit/score/cpu/arm/Makefile.am b/cpukit/score/cpu/arm/Makefile.am
index 9043622..61210cb 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 0000000..726db75
--- /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 at 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 f8e652d..79647d1 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 936c452..a4bae3c 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 );




More information about the vc mailing list