From f0d66b1ba972a13d8942b1030c2affcbedc005fe Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 26 Mar 2012 18:12:22 +0200 Subject: 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(-) create mode 100644 cpukit/score/cpu/arm/armv7m-exception-priority-handler.c 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 + * + * + * 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 + +#ifdef ARM_MULTILIB_ARCH_V7M + +#include + +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 ); -- cgit v1.2.3