(__lll_mutex_timedlock_wait): Remove.
authordrepper <drepper>
Sat, 1 Mar 2003 09:43:27 +0000 (09:43 +0000)
committerdrepper <drepper>
Sat, 1 Mar 2003 09:43:27 +0000 (09:43 +0000)
(__lll_mutex_unlock_wake): Don't save, load, and restore %esi.

nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S

index ccae01b..d17d078 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -68,113 +68,24 @@ __lll_mutex_lock_wait:
        .size   __lll_mutex_lock_wait,.-__lll_mutex_lock_wait
 
 
-       .globl  __lll_mutex_timedlock_wait
-       .type   __lll_mutex_timedlock_wait,@function
-       .hidden __lll_mutex_timedlock_wait
-       .align  16
-__lll_mutex_timedlock_wait:
-       /* Check for a valid timeout value.  */
-       cmpl    $1000000000, 4(%edx)
-       jae     3f
-
-       pushl   %edi
-       pushl   %esi
-       pushl   %ebx
-       pushl   %ebp
-
-       /* Stack frame for the timespec and timeval structs.  */
-       subl    $8, %esp
-
-       movl    %ecx, %ebp
-       movl    %edx, %edi
-       leal    1(%eax), %esi
-
-       /* Get current time.  */
-1:
-       movl    %esp, %ebx
-       xorl    %ecx, %ecx
-       movl    $SYS_gettimeofday, %eax
-       ENTER_KERNEL
-
-       /* Compute relative timeout.  */
-       movl    4(%esp), %eax
-       movl    $1000, %edx
-       mul     %edx            /* Milli seconds to nano seconds.  */
-       movl    (%edi), %ecx
-       movl    4(%edi), %edx
-       subl    (%esp), %ecx
-       subl    %eax, %edx
-       jns     4f
-       addl    $1000000000, %edx
-       decl    %ecx
-4:     testl   %ecx, %ecx
-       js      5f              /* Time is already up.  */
-
-       /* Futex call.  */
-       movl    %ecx, (%esp)    /* Store relative timeout.  */
-       movl    %edx, 4(%esp)
-       movl    %esi, %edx
-       movl    %esp, %esi
-       xorl    %ecx, %ecx      /* movl $FUTEX_WAIT, %ecx */
-       movl    %ebp, %ebx
-       movl    $SYS_futex, %eax
-       ENTER_KERNEL
-
-       movl    $1, %esi
-#ifndef UP
-       cmpl    $0, %gs:MULTIPLE_THREADS_OFFSET
-       je,pt   0f
-       lock
-0:
-#endif
-       xaddl   %esi, (%ebx)
-       testl   %esi, %esi
-       jne     7f
-
-       movl    $2, (%ebx)
-       xorl    %eax, %eax
-
-6:     addl    $8, %esp
-       popl    %ebp
-       popl    %ebx
-       popl    %esi
-       popl    %edi
-       ret
-
-       /* Check whether the time expired.  */
-7:     cmpl    $-ETIMEDOUT, %eax
-       je      5f
-       jmp     1b
-
-3:     movl    $EINVAL, %eax
-       ret
-
-5:     movl    $ETIMEDOUT, %eax
-       jmp     6b
-       .size   __lll_mutex_timedlock_wait,.-__lll_mutex_timedlock_wait
-
-
        .globl  __lll_mutex_unlock_wake
        .type   __lll_mutex_unlock_wake,@function
        .hidden __lll_mutex_unlock_wake
        .align  16
 __lll_mutex_unlock_wake:
-       pushl   %esi
        pushl   %ebx
        pushl   %ecx
        pushl   %edx
 
-       movl    $FUTEX_WAKE, %ecx
        movl    %eax, %ebx
-       xorl    %esi, %esi
-       movl    $0, (%ebx)
+       movl    $FUTEX_WAKE, %ecx
        movl    $1, %edx        /* Wake one thread.  */
        movl    $SYS_futex, %eax
+       movl    $0, (%ebx)
        ENTER_KERNEL
 
        popl    %edx
        popl    %ecx
        popl    %ebx
-       popl    %esi
        ret
        .size   __lll_mutex_unlock_wake,.-__lll_mutex_unlock_wake