summaryrefslogtreecommitdiff
path: root/include/atomic/nolock.h
diff options
context:
space:
mode:
authorunknown <davi@mysql.com/endora.local>2008-01-11 20:34:36 -0200
committerunknown <davi@mysql.com/endora.local>2008-01-11 20:34:36 -0200
commit26af3c7e351483496db87ba08394cad4ae034a95 (patch)
tree115e267d95776235581c61a21bf888c7e7690075 /include/atomic/nolock.h
parent44101143f7668cc753f9f78057f164469b051760 (diff)
downloadmariadb-git-26af3c7e351483496db87ba08394cad4ae034a95.tar.gz
Bug#33728 Atomic builtins
Use compiler provided atomic builtins as a 'backend' for MySQL's atomic primitives. The builtins are available on a handful of platforms and compilers. configure.in: Check if the compiler provides atomic builtins and that __sync_lock_test_and_set stores the correct value. include/atomic/nolock.h: Use the atomic builtins if available. include/atomic/gcc_builtins.h: Implement the atomic ADD, SWAP, CAS, STORE (or operation optimized away) and LOAD primitives using atomic builtins provided by the compiler.
Diffstat (limited to 'include/atomic/nolock.h')
-rw-r--r--include/atomic/nolock.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/atomic/nolock.h b/include/atomic/nolock.h
index f15c8b13b7f..10ac17884b6 100644
--- a/include/atomic/nolock.h
+++ b/include/atomic/nolock.h
@@ -13,7 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#if defined(__i386__) || defined(_M_IX86)
+#if defined(__i386__) || defined(_M_IX86) || defined(HAVE_GCC_ATOMIC_BUILTINS)
#ifdef MY_ATOMIC_MODE_DUMMY
# define LOCK ""
@@ -21,7 +21,9 @@
# define LOCK "lock"
#endif
-#ifdef __GNUC__
+#ifdef HAVE_GCC_ATOMIC_BUILTINS
+#include "gcc_builtins.h"
+#elif __GNUC__
#include "x86-gcc.h"
#elif defined(_MSC_VER)
#include "x86-msvc.h"