--- /dev/null
+Bottom: 59952986bf11b417c6da864108e5278e0fbca08a
+Top: b4ed043a0fc86707acda56000b3096e59867bfbe
+Author: Sean Hefty <sean.hefty@intel.com>
+Date: 2010-08-25 16:49:51 -0700
+
+Refresh of atomic
+
+---
+
+diff --git a/Makefile.am b/Makefile.am
+index 4bd4bd5..f443091 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,10 +2,6 @@ INCLUDES = -I$(srcdir)/include -I$(srcdir)/linux
+
+ AM_CFLAGS = -g -Wall -D_GNU_SOURCE
+
+-if DEFINE_ATOMICS
+- AM_CFLAGS += -DDEFINE_ATOMICS
+-endif
+-
+ bin_PROGRAMS = util/ib_acme
+ sbin_PROGRAMS = svc/ib_acm
+ svc_ib_acm_SOURCES = src/acm.c
+diff --git a/configure.in b/configure.in
+index ce55f75..dfddeac 100755
+--- a/configure.in
++++ b/configure.in
+@@ -41,15 +41,12 @@ fi
+ \r
+ dnl Check for gcc atomic intrinsics\r
+ AC_MSG_CHECKING(compiler support for atomics)\r
+-AC_TRY_LINK([],\r
++AC_TRY_LINK([int i = 0;],\r
++ [ return __sync_add_and_fetch(&i, 1) != __sync_sub_and_fetch(&i, 1); ],\r
++ [ AC_MSG_RESULT(yes) ],\r
+ [\r
+- int i = 0;\r
+- return __sync_add_and_fetch(&i, 1) == __sync_sub_and_fetch(&i, 1) + 1;\r
+- ],\r
+- AC_MSG_RESULT(yes),\r
+- [\r
+- AC_MSG_RESULT(no - defining atomics)\r
+- AC_DEFINE(DEFINE_ATOMICS, [], [Set to 1 to implement atomics])\r
++ AC_MSG_RESULT(no)\r
++ AC_DEFINE(DEFINE_ATOMICS, 1, [Set to 1 to implement atomics])\r
+ ])\r
+ \r
+ AC_CACHE_CHECK(whether ld accepts --version-script, ac_cv_version_script,\r
+diff --git a/linux/osd.h b/linux/osd.h
+index 9a167a7..9dacab9 100644
+--- a/linux/osd.h
++++ b/linux/osd.h
+@@ -68,17 +68,17 @@
+ #if DEFINE_ATOMICS\r
+ typedef struct { pthread_mutex_t mut; int val; } atomic_t;\r
+ #define atomic_inc(v) { \\r
+- int v;\r
++ int x;\r
+ pthread_mutex_lock(&(v)->mut); \\r
+- v = ++val; \\r
++ x = ++val; \\r
+ pthread_mutex_unlock(&(v)->mut); \\r
+- return v; }\r
++ return x; }\r
+ #define atomic_dec(v) { \\r
+- int v;\r
++ int x;\r
+ pthread_mutex_lock(&(v)->mut); \\r
+- v = --val; \\r
++ x = --val; \\r
+ pthread_mutex_unlock(&(v)->mut); \\r
+- return v; }\r
++ return x; }\r
+ #define atomic_init(v) { pthread_mutex_init(&(v)->mut, NULL); (v)->val = 0); }\r
+ #else\r
+ typedef struct { volatile int val; } atomic_t;