(__lll_mutex_lock_wait): Optimize a bit more. Just one copy of the atomic instructio...
authorUlrich Drepper <drepper@redhat.com>
Mon, 1 Mar 2004 06:38:24 +0000 (06:38 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 1 Mar 2004 06:38:24 +0000 (06:38 +0000)
nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S

index 600ba75..96ea35c 100644 (file)
@@ -51,24 +51,18 @@ __lll_mutex_lock_wait:
        xorl    %ecx, %ecx      /* movl $FUTEX_WAIT, %ecx */
 
        cmpl    %edx, %eax      /* NB:   %edx == 2 */
-       je 1f
-
-       movl    %edx, %eax
-       xchgl   %eax, (%ebx)    /* NB:   lock is implied */
-
-       testl   %eax, %eax
-       je      2f
+       jne 2f
 
 1:     movl    $SYS_futex, %eax
        ENTER_KERNEL
 
-       movl    %edx, %eax
+2:     movl    %edx, %eax
        xchgl   %eax, (%ebx)    /* NB:   lock is implied */
 
        testl   %eax, %eax
        jnz,pn  1b
 
-2:     popl    %esi
+       popl    %esi
        popl    %ebx
        popl    %edx
        ret
index 3c56dae..2c918d7 100644 (file)
@@ -51,24 +51,18 @@ __lll_mutex_lock_wait:
        movq    %r10, %rsi      /* movq $FUTEX_WAIT, %rsi */
 
        cmpl    %edx, %eax      /* NB:   %edx == 2 */
-       je      1f
-
-       movl    %edx, %eax
-       xchgl   %eax, (%rdi)    /* NB:   lock is implied */
-
-       testl   %eax, %eax
-       je      2f
+       jne     2f
 
 1:     movq    $SYS_futex, %rax
        syscall
 
-       movl    %edx, %eax
+2:     movl    %edx, %eax
        xchgl   %eax, (%rdi)    /* NB:   lock is implied */
 
        testl   %eax, %eax
        jnz     1b
 
-2:     popq    %rdx
+       popq    %rdx
        popq    %r10
        retq
        .size   __lll_mutex_lock_wait,.-__lll_mutex_lock_wait