From f0ad529d28688214568532c0d30eb13654db1462 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 7 Mar 2006 20:47:53 +0000 Subject: 2006-03-07 Joel Sherrill PR 866/rtems * score/include/rtems/system.h, score/include/rtems/score/isr.h, score/inline/rtems/score/thread.inl, score/macros/rtems/score/thread.inl: Added memory barriers to enter and exit of dispatching and interrupt critical sections so GCC will not optimize and reorder code out of a critical section. --- cpukit/score/inline/rtems/score/thread.inl | 3 +++ 1 file changed, 3 insertions(+) (limited to 'cpukit/score/inline') diff --git a/cpukit/score/inline/rtems/score/thread.inl b/cpukit/score/inline/rtems/score/thread.inl index 1599883d70..125f7cf5f7 100644 --- a/cpukit/score/inline/rtems/score/thread.inl +++ b/cpukit/score/inline/rtems/score/thread.inl @@ -142,6 +142,7 @@ RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void ) RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void ) { _Thread_Dispatch_disable_level += 1; + RTEMS_COMPILER_MEMORY_BARRIER(); } /** @@ -154,6 +155,7 @@ RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void ) #if ( CPU_INLINE_ENABLE_DISPATCH == TRUE ) RTEMS_INLINE_ROUTINE void _Thread_Enable_dispatch() { + RTEMS_COMPILER_MEMORY_BARRIER(); if ( (--_Thread_Dispatch_disable_level) == 0 ) _Thread_Dispatch(); } @@ -171,6 +173,7 @@ void _Thread_Enable_dispatch( void ); RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void ) { + RTEMS_COMPILER_MEMORY_BARRIER(); _Thread_Dispatch_disable_level -= 1; } -- cgit v1.2.3