select: fix 64-bit timeout truncation on pre-time64 kernels
[musl] / arch / i386 / atomic_arch.h
index 6e67c4c..047fb68 100644 (file)
@@ -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;
+}