diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-30 15:29:43 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-30 17:22:25 +0200 |
commit | 9e6df6adf3bc66cd0fe0500e6f153ecb6dc46454 (patch) | |
tree | 6c3d3f58be67c5276c373c97c3363e2d99be50de /cpukit/score/cpu | |
parent | bsps/i386: Include missing header and fix warnings (diff) | |
download | rtems-9e6df6adf3bc66cd0fe0500e6f153ecb6dc46454.tar.bz2 |
score/cpu: Fix _CPU_SMP_lock_Acquire()
Avoid infinite loops due to compiler optimization.
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/cpu/i386/rtems/score/cpusmplock.h | 2 | ||||
-rw-r--r-- | 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 ) ); } |