Loading include/asm-x86/mutex_32.h +30 −34 Original line number Diff line number Diff line Loading @@ -28,12 +28,10 @@ do { \ typecheck(atomic_t *, count); \ typecheck_fn(void (*)(atomic_t *), fail_fn); \ \ __asm__ __volatile__( \ LOCK_PREFIX " decl (%%eax) \n" \ asm volatile(LOCK_PREFIX " decl (%%eax)\n" \ " jns 1f \n" \ " call " #fail_fn "\n" \ "1:\n" \ \ : "=a" (dummy) \ : "a" (count) \ : "memory", "ecx", "edx"); \ Loading @@ -50,8 +48,8 @@ do { \ * wasn't 1 originally. This function returns 0 if the fastpath succeeds, * or anything the slow path function returns */ static inline int __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) static inline int __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) { if (unlikely(atomic_dec_return(count) < 0)) return fail_fn(count); Loading Loading @@ -79,12 +77,10 @@ do { \ typecheck(atomic_t *, count); \ typecheck_fn(void (*)(atomic_t *), fail_fn); \ \ __asm__ __volatile__( \ LOCK_PREFIX " incl (%%eax) \n" \ asm volatile(LOCK_PREFIX " incl (%%eax)\n" \ " jg 1f\n" \ " call " #fail_fn "\n" \ "1:\n" \ \ : "=a" (dummy) \ : "a" (count) \ : "memory", "ecx", "edx"); \ Loading @@ -104,8 +100,8 @@ do { \ * Additionally, if the value was < 0 originally, this function must not leave * it to 0 on failure. */ static inline int __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) static inline int __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) { /* * We have two variants here. The cmpxchg based one is the best one Loading Loading
include/asm-x86/mutex_32.h +30 −34 Original line number Diff line number Diff line Loading @@ -28,12 +28,10 @@ do { \ typecheck(atomic_t *, count); \ typecheck_fn(void (*)(atomic_t *), fail_fn); \ \ __asm__ __volatile__( \ LOCK_PREFIX " decl (%%eax) \n" \ asm volatile(LOCK_PREFIX " decl (%%eax)\n" \ " jns 1f \n" \ " call " #fail_fn "\n" \ "1:\n" \ \ : "=a" (dummy) \ : "a" (count) \ : "memory", "ecx", "edx"); \ Loading @@ -50,8 +48,8 @@ do { \ * wasn't 1 originally. This function returns 0 if the fastpath succeeds, * or anything the slow path function returns */ static inline int __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) static inline int __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) { if (unlikely(atomic_dec_return(count) < 0)) return fail_fn(count); Loading Loading @@ -79,12 +77,10 @@ do { \ typecheck(atomic_t *, count); \ typecheck_fn(void (*)(atomic_t *), fail_fn); \ \ __asm__ __volatile__( \ LOCK_PREFIX " incl (%%eax) \n" \ asm volatile(LOCK_PREFIX " incl (%%eax)\n" \ " jg 1f\n" \ " call " #fail_fn "\n" \ "1:\n" \ \ : "=a" (dummy) \ : "a" (count) \ : "memory", "ecx", "edx"); \ Loading @@ -104,8 +100,8 @@ do { \ * Additionally, if the value was < 0 originally, this function must not leave * it to 0 on failure. */ static inline int __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) static inline int __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) { /* * We have two variants here. The cmpxchg based one is the best one Loading