Merge branch 'x86-spinlocks-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / arch / x86 / include / asm / rwsem.h
index df4cd32..2dbe4a7 100644 (file)
@@ -204,13 +204,7 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
  */
 static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
 {
-       long tmp = delta;
-
-       asm volatile(LOCK_PREFIX "xadd %0,%1"
-                    : "+r" (tmp), "+m" (sem->count)
-                    : : "memory");
-
-       return tmp + delta;
+       return delta + xadd(&sem->count, delta);
 }
 
 #endif /* __KERNEL__ */