Merge tag 'leds_for_4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewsk...
[sfrench/cifs-2.6.git] / arch / x86 / include / asm / rwsem.h
index 453744c1d34752c20988cf513ff1eef75c3fa657..8dbc762ad132940bb6354ca7cfcfd4c69fd66f3a 100644 (file)
@@ -77,7 +77,7 @@ static inline void __down_read(struct rw_semaphore *sem)
 /*
  * trylock for reading -- returns 1 if successful, 0 if contention
  */
-static inline int __down_read_trylock(struct rw_semaphore *sem)
+static inline bool __down_read_trylock(struct rw_semaphore *sem)
 {
        long result, tmp;
        asm volatile("# beginning __down_read_trylock\n\t"
@@ -93,7 +93,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
                     : "+m" (sem->count), "=&a" (result), "=&r" (tmp)
                     : "i" (RWSEM_ACTIVE_READ_BIAS)
                     : "memory", "cc");
-       return result >= 0 ? 1 : 0;
+       return result >= 0;
 }
 
 /*
@@ -134,9 +134,10 @@ static inline int __down_write_killable(struct rw_semaphore *sem)
 /*
  * trylock for writing -- returns 1 if successful, 0 if contention
  */
-static inline int __down_write_trylock(struct rw_semaphore *sem)
+static inline bool __down_write_trylock(struct rw_semaphore *sem)
 {
-       long result, tmp;
+       bool result;
+       long tmp0, tmp1;
        asm volatile("# beginning __down_write_trylock\n\t"
                     "  mov          %0,%1\n\t"
                     "1:\n\t"
@@ -144,14 +145,14 @@ static inline int __down_write_trylock(struct rw_semaphore *sem)
                     /* was the active mask 0 before? */
                     "  jnz          2f\n\t"
                     "  mov          %1,%2\n\t"
-                    "  add          %3,%2\n\t"
+                    "  add          %4,%2\n\t"
                     LOCK_PREFIX "  cmpxchg  %2,%0\n\t"
                     "  jnz          1b\n\t"
                     "2:\n\t"
-                    "  sete         %b1\n\t"
-                    "  movzbl       %b1, %k1\n\t"
+                    CC_SET(e)
                     "# ending __down_write_trylock\n\t"
-                    : "+m" (sem->count), "=&a" (result), "=&r" (tmp)
+                    : "+m" (sem->count), "=&a" (tmp0), "=&r" (tmp1),
+                      CC_OUT(e) (result)
                     : "er" (RWSEM_ACTIVE_WRITE_BIAS)
                     : "memory", "cc");
        return result;
@@ -213,23 +214,5 @@ static inline void __downgrade_write(struct rw_semaphore *sem)
                     : "memory", "cc");
 }
 
-/*
- * implement atomic add functionality
- */
-static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
-{
-       asm volatile(LOCK_PREFIX _ASM_ADD "%1,%0"
-                    : "+m" (sem->count)
-                    : "er" (delta));
-}
-
-/*
- * implement exchange and add functionality
- */
-static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
-{
-       return delta + xadd(&sem->count, delta);
-}
-
 #endif /* __KERNEL__ */
 #endif /* _ASM_X86_RWSEM_H */