From 7c90670c81b213610a43f55d065f5b86fd6e646b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 2 Jun 2014 13:23:07 +0200 Subject: arm: Add ARM_MULTILIB_HAS_BARRIER_INSTRUCTIONS --- cpukit/score/cpu/arm/rtems/score/arm.h | 1 + cpukit/score/cpu/arm/rtems/score/cpu.h | 6 ++++++ 2 files changed, 7 insertions(+) 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 ) -- cgit v1.2.3