From 9e6df6adf3bc66cd0fe0500e6f153ecb6dc46454 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 30 Jul 2013 15:29:43 +0200 Subject: score/cpu: Fix _CPU_SMP_lock_Acquire() Avoid infinite loops due to compiler optimization. --- cpukit/score/cpu/i386/rtems/score/cpusmplock.h | 2 +- cpukit/score/cpu/sparc/rtems/score/cpusmplock.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cpukit/score/cpu/i386/rtems/score/cpusmplock.h b/cpukit/score/cpu/i386/rtems/score/cpusmplock.h index 6fadfef419..f9d36e63fe 100644 --- a/cpukit/score/cpu/i386/rtems/score/cpusmplock.h +++ b/cpukit/score/cpu/i386/rtems/score/cpusmplock.h @@ -68,7 +68,7 @@ static inline void _CPU_SMP_lock_Acquire( CPU_SMP_lock_Control *lock ) { do { while ( lock->locked ) { - /* Do nothing */ + RTEMS_COMPILER_MEMORY_BARRIER(); } } while ( _I386_Atomic_swap( &lock->locked, 1 ) ); } diff --git a/cpukit/score/cpu/sparc/rtems/score/cpusmplock.h b/cpukit/score/cpu/sparc/rtems/score/cpusmplock.h index 1158040dc5..63b11b4d69 100644 --- a/cpukit/score/cpu/sparc/rtems/score/cpusmplock.h +++ b/cpukit/score/cpu/sparc/rtems/score/cpusmplock.h @@ -73,7 +73,7 @@ static inline void _CPU_SMP_lock_Acquire( CPU_SMP_lock_Control *lock ) { do { while ( lock->locked ) { - /* Do nothing */ + RTEMS_COMPILER_MEMORY_BARRIER(); } } while ( _SPARC_Atomic_swap( &lock->locked, 1 ) ); } -- cgit v1.2.3