From: Ulrich Drepper Date: Mon, 1 Mar 2004 06:38:24 +0000 (+0000) Subject: (__lll_mutex_lock_wait): Optimize a bit more. Just one copy of the atomic instructio... X-Git-Tag: upstream/2.30~18232 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ebddb42437ef37b15b1be1d82589b909c6799b1c;p=external%2Fglibc.git (__lll_mutex_lock_wait): Optimize a bit more. Just one copy of the atomic instruction needed. --- diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S index 600ba75..96ea35c 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S @@ -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 diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S index 3c56dae..2c918d7 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S @@ -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