summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-02 13:23:07 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-02 13:48:58 +0200
commit7c90670c81b213610a43f55d065f5b86fd6e646b (patch)
tree645041e471767bf0f0e11c0b6fcd02aa1d9f4f0b
parentlibblock: Use pthread_once() for initialization (diff)
downloadrtems-7c90670c81b213610a43f55d065f5b86fd6e646b.tar.bz2
arm: Add ARM_MULTILIB_HAS_BARRIER_INSTRUCTIONS
-rw-r--r--cpukit/score/cpu/arm/rtems/score/arm.h1
-rw-r--r--cpukit/score/cpu/arm/rtems/score/cpu.h6
2 files changed, 7 insertions, 0 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/arm.h b/cpukit/score/cpu/arm/rtems/score/arm.h
index bb78cbe284..a105f17ad2 100644
--- a/cpukit/score/cpu/arm/rtems/score/arm.h
+++ b/cpukit/score/cpu/arm/rtems/score/arm.h
@@ -42,6 +42,7 @@ extern "C" {
|| defined(__ARM_ARCH_7M__)
#define ARM_MULTILIB_HAS_WFI
#define ARM_MULTILIB_HAS_LOAD_STORE_EXCLUSIVE
+ #define ARM_MULTILIB_HAS_BARRIER_INSTRUCTIONS
#endif
#if defined(__ARM_ARCH_7A__) \
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h
index d53be6043f..ad070dfbad 100644
--- a/cpukit/score/cpu/arm/rtems/score/cpu.h
+++ b/cpukit/score/cpu/arm/rtems/score/cpu.h
@@ -301,17 +301,23 @@ extern uint32_t arm_cpu_mode;
static inline void _ARM_Data_memory_barrier( void )
{
+#ifdef ARM_MULTILIB_HAS_BARRIER_INSTRUCTIONS
__asm__ volatile ( "dmb" : : : "memory" );
+#endif
}
static inline void _ARM_Data_synchronization_barrier( void )
{
+#ifdef ARM_MULTILIB_HAS_BARRIER_INSTRUCTIONS
__asm__ volatile ( "dsb" : : : "memory" );
+#endif
}
static inline void _ARM_Instruction_synchronization_barrier( void )
{
+#ifdef ARM_MULTILIB_HAS_BARRIER_INSTRUCTIONS
__asm__ volatile ( "isb" : : : "memory" );
+#endif
}
static inline uint32_t arm_interrupt_disable( void )