diff options
Diffstat (limited to 'arch/x86/include/asm/local.h')
| -rw-r--r-- | arch/x86/include/asm/local.h | 28 | 
1 files changed, 4 insertions, 24 deletions
diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h index 2d89e3980cb..4ad6560847b 100644 --- a/arch/x86/include/asm/local.h +++ b/arch/x86/include/asm/local.h @@ -52,12 +52,7 @@ static inline void local_sub(long i, local_t *l)   */  static inline int local_sub_and_test(long i, local_t *l)  { -	unsigned char c; - -	asm volatile(_ASM_SUB "%2,%0; sete %1" -		     : "+m" (l->a.counter), "=qm" (c) -		     : "ir" (i) : "memory"); -	return c; +	GEN_BINARY_RMWcc(_ASM_SUB, l->a.counter, "er", i, "%0", "e");  }  /** @@ -70,12 +65,7 @@ static inline int local_sub_and_test(long i, local_t *l)   */  static inline int local_dec_and_test(local_t *l)  { -	unsigned char c; - -	asm volatile(_ASM_DEC "%0; sete %1" -		     : "+m" (l->a.counter), "=qm" (c) -		     : : "memory"); -	return c != 0; +	GEN_UNARY_RMWcc(_ASM_DEC, l->a.counter, "%0", "e");  }  /** @@ -88,12 +78,7 @@ static inline int local_dec_and_test(local_t *l)   */  static inline int local_inc_and_test(local_t *l)  { -	unsigned char c; - -	asm volatile(_ASM_INC "%0; sete %1" -		     : "+m" (l->a.counter), "=qm" (c) -		     : : "memory"); -	return c != 0; +	GEN_UNARY_RMWcc(_ASM_INC, l->a.counter, "%0", "e");  }  /** @@ -107,12 +92,7 @@ static inline int local_inc_and_test(local_t *l)   */  static inline int local_add_negative(long i, local_t *l)  { -	unsigned char c; - -	asm volatile(_ASM_ADD "%2,%0; sets %1" -		     : "+m" (l->a.counter), "=qm" (c) -		     : "ir" (i) : "memory"); -	return c; +	GEN_BINARY_RMWcc(_ASM_ADD, l->a.counter, "er", i, "%0", "s");  }  /**  | 
