[rtems commit] score/cpu: Fix _CPU_SMP_lock_Acquire()
Sebastian Huber
sebh at rtems.org
Tue Jul 30 15:17:13 UTC 2013
Module: rtems
Branch: master
Commit: 9e6df6adf3bc66cd0fe0500e6f153ecb6dc46454
Changeset: http://git.rtems.org/rtems/commit/?id=9e6df6adf3bc66cd0fe0500e6f153ecb6dc46454
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Tue Jul 30 15:29:43 2013 +0200
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 6fadfef..f9d36e6 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 1158040..63b11b4 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 ) );
}
More information about the vc
mailing list