diff options
Diffstat (limited to 'include/atomic/nolock.h')
-rw-r--r-- | include/atomic/nolock.h | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/include/atomic/nolock.h b/include/atomic/nolock.h index e4cd9ab9896..9ec5eb5a2fd 100644 --- a/include/atomic/nolock.h +++ b/include/atomic/nolock.h @@ -17,23 +17,37 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #if defined(__i386__) || defined(_MSC_VER) || defined(__x86_64__) \ - || defined(HAVE_GCC_ATOMIC_BUILTINS) + || defined(HAVE_GCC_ATOMIC_BUILTINS) \ + || defined(HAVE_SOLARIS_ATOMIC) # ifdef MY_ATOMIC_MODE_DUMMY # define LOCK_prefix "" # else # define LOCK_prefix "lock" # endif - -# ifdef HAVE_GCC_ATOMIC_BUILTINS -# include "gcc_builtins.h" -# elif __GNUC__ -# include "x86-gcc.h" -# elif defined(_MSC_VER) +/* + We choose implementation as follows: + ------------------------------------ + On Windows using Visual C++ the native implementation should be + preferrable. When using gcc we prefer the native x86 implementation, + we prefer the Solaris implementation before the gcc because of + stability preference, we choose gcc implementation if nothing else + works on gcc. If neither Visual C++ or gcc we still choose the + Solaris implementation on Solaris (mainly for SunStudio compiles. +*/ +# if defined(_MSV_VER) # include "generic-msvc.h" +# elif __GNUC__ +# if defined(__i386__) || defined(__x86_64__) +# include "x86-gcc.h" +# elif defined(HAVE_SOLARIS_ATOMIC) +# include "solaris.h" +# elif defined(HAVE_GCC_ATOMIC_BUILTINS) +# include "gcc_builtins.h" +# endif +# elif defined(HAVE_SOLARIS_ATOMIC) +# include "solaris.h" # endif -#elif defined(HAVE_SOLARIS_ATOMIC) -#include "solaris.h" #endif #if defined(make_atomic_cas_body) || defined(MY_ATOMICS_MADE) |