Don't use __libc_locking_needed, use multiple_threads field in TCB.
[kopensolaris-gnu/glibc.git] / nptl / sysdeps / unix / sysv / linux / i386 / i486 / libc-lowlevellock.S
index 1075909..27275e3 100644 (file)
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <sysdep.h>
+#include <tls.h>
 
        .text
 
@@ -48,13 +49,7 @@ __lll_lock_wait:
 
        orl     $-1, %eax       /* Load -1.  */
 #ifndef UP
-# ifdef PIC
-       call    __i686.get_pc_thunk.bx
-       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
-       cmpl    $0, __libc_locking_needed@GOTOFF(%ebx)
-# else
-       cmpl    $0, __libc_locking_needed
-# endif
+       cmpl    $0, %gs:MULTIPLE_THREADS_OFFSET
        je,pt   0f
        lock
 0:
@@ -83,13 +78,7 @@ lll_unlock_wake_cb:
 
        movl    20(%esp), %ebx
 #ifndef UP
-# ifdef PIC
-       call    __i686.get_pc_thunk.bx
-       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
-       cmpl    $0, __libc_locking_needed@GOTOFF(%ebx)
-# else
-       cmpl    $0, __libc_locking_needed
-# endif
+       cmpl    $0, %gs:MULTIPLE_THREADS_OFFSET
        je,pt   0f
        lock
 0:
@@ -196,10 +185,11 @@ __lll_timedwait_tid:
        .size   __lll_timedwait_tid,.-__lll_timedwait_tid
 
 
-       .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
-       .globl __i686.get_pc_thunk.bx
-       .hidden __i686.get_pc_thunk.bx
-       .type __i686.get_pc_thunk.bx,@function
-__i686.get_pc_thunk.bx:
-       movl    (%esp), %ebx
+       .section .gnu.linkonce.t.__i686.get_pc_thunk.dx,"ax",@progbits
+       .globl __i686.get_pc_thunk.dx
+       .hidden __i686.get_pc_thunk.dx
+       .type __i686.get_pc_thunk.dx,@function
+__i686.get_pc_thunk.dx:
+       movl    (%esp), %edx
        ret
+       .size   __i686.get_pc_thunk.dx,.-__i686.get_pc_thunk.dx