[PATCH] i386: Remove const case for rwlocks
authorAndi Kleen <ak@suse.de>
Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)
committerAndi Kleen <andi@basil.nowhere.org>
Tue, 26 Sep 2006 08:52:29 +0000 (10:52 +0200)
rwlocks are now out of line, so it near never triggers.  Also it was
incompatible with the new dwarf2 unwinder because it had unannotiatable
push/pops.

Signed-off-by: Andi Kleen <ak@suse.de>
include/asm-i386/rwlock.h

index 87c069c..f40ccbd 100644 (file)
 #define RW_LOCK_BIAS            0x01000000
 #define RW_LOCK_BIAS_STR       "0x01000000"
 
-#define __build_read_lock_ptr(rw, helper)   \
+#define __build_read_lock(rw, helper)   \
        asm volatile(LOCK_PREFIX " subl $1,(%0)\n\t" \
                        "jns 1f\n" \
                        "call " helper "\n\t" \
                        "1:\n" \
                        ::"a" (rw) : "memory")
 
-#define __build_read_lock_const(rw, helper)   \
-       asm volatile(LOCK_PREFIX " subl $1,%0\n\t" \
-                       "jns 1f\n" \
-                       "pushl %%eax\n\t" \
-                       "leal %0,%%eax\n\t" \
-                       "call " helper "\n\t" \
-                       "popl %%eax\n\t" \
-                       "1:\n" \
-                       :"+m" (*(volatile int *)rw) : : "memory")
-
-#define __build_read_lock(rw, helper)  do { \
-                                               if (__builtin_constant_p(rw)) \
-                                                       __build_read_lock_const(rw, helper); \
-                                               else \
-                                                       __build_read_lock_ptr(rw, helper); \
-                                       } while (0)
-
-#define __build_write_lock_ptr(rw, helper) \
+#define __build_write_lock(rw, helper) \
        asm volatile(LOCK_PREFIX " subl $" RW_LOCK_BIAS_STR ",(%0)\n\t" \
                        "jz 1f\n" \
                        "call " helper "\n\t" \
                        "1:\n" \
                        ::"a" (rw) : "memory")
 
-#define __build_write_lock_const(rw, helper) \
-       asm volatile(LOCK_PREFIX " subl $" RW_LOCK_BIAS_STR ",%0\n\t" \
-                       "jz 1f\n" \
-                       "pushl %%eax\n\t" \
-                       "leal %0,%%eax\n\t" \
-                       "call " helper "\n\t" \
-                       "popl %%eax\n\t" \
-                       "1:\n" \
-                       :"+m" (*(volatile int *)rw) : : "memory")
-
-#define __build_write_lock(rw, helper) do { \
-                                               if (__builtin_constant_p(rw)) \
-                                                       __build_write_lock_const(rw, helper); \
-                                               else \
-                                                       __build_write_lock_ptr(rw, helper); \
-                                       } while (0)
-
 #endif