X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=arch%2Fi386%2Fatomic_arch.h;h=047fb68dd5dfb2e41e492fda147066daad5561db;hb=8949da7ab1c0dbf801e8bc78f0c0adc625020f75;hp=6e67c4ce48f6852886c42a4a2a505e6ef83bb5ee;hpb=e24984efd5c6ac5ea8e6cb6cd914fa8435d458bc;p=musl diff --git a/arch/i386/atomic_arch.h b/arch/i386/atomic_arch.h index 6e67c4ce..047fb68d 100644 --- a/arch/i386/atomic_arch.h +++ b/arch/i386/atomic_arch.h @@ -71,7 +71,7 @@ static inline void a_barrier() __asm__ __volatile__( "" : : : "memory" ); } -#define a_pause a_pause +#define a_spin a_spin static inline void a_spin() { __asm__ __volatile__( "pause" : : : "memory" ); @@ -92,10 +92,17 @@ static inline int a_ctz_64(uint64_t x) return r; } -#define a_ctz_l a_ctz_l -static inline int a_ctz_l(unsigned long x) +#define a_ctz_32 a_ctz_32 +static inline int a_ctz_32(uint32_t x) { - long r; + int r; __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) ); return r; } + +#define a_clz_32 a_clz_32 +static inline int a_clz_32(uint32_t x) +{ + __asm__( "bsr %1,%0 ; xor $31,%0" : "=r"(x) : "r"(x) ); + return x; +}