From a95da156d3319e0c283b20f05ddc91d5d492325a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Tue, 15 Dec 2009 16:23:52 +0000 Subject: [PATCH] Resort to GCC built-in for atomic_add() --- src/atomic.h | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/src/atomic.h b/src/atomic.h index 9207ad09..12fb6647 100644 --- a/src/atomic.h +++ b/src/atomic.h @@ -19,44 +19,10 @@ #ifndef HTSATOMIC_H__ #define HTSATOMIC_H__ -/** - * Atomically add 'incr' to *ptr and return the previous value - */ -#if defined(__i386__) || defined(__x86_64__) -static inline int -atomic_add(volatile int *ptr, int incr) -{ - int r; - asm volatile("lock; xaddl %0, %1" : - "=r"(r), "=m"(*ptr) : "0" (incr), "m" (*ptr) : "memory"); - return r; -} -#elif defined(__ppc__) || defined(__PPC__) - -/* somewhat based on code from darwin gcc */ -static inline int -atomic_add (volatile int *ptr, int incr) -{ - int tmp, res; - asm volatile("0:\n" - "lwarx %1,0,%2\n" - "add%I3 %0,%1,%3\n" - "stwcx. %0,0,%2\n" - "bne- 0b\n" - : "=&r"(tmp), "=&b"(res) - : "r" (ptr), "Ir"(incr) - : "cr0", "memory"); - - return res; -} -#else - static inline int atomic_add(volatile int *ptr, int incr) { return __sync_fetch_and_add(ptr, incr); } -#endif - #endif /* HTSATOMIC_H__ */