about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-01 09:45:23 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-01 09:45:23 +0000
commitbd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5 (patch)
tree4ede4b546342198dd0869b7814967725445a7f6c /nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
parent85c54a327d4c05381603eb49792afa5ad5dbe46c (diff)
downloadglibc-bd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5.tar.gz
glibc-bd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5.tar.xz
glibc-bd8bb78ba24ecd14b648dbf7f001a8afa9d5ede5.zip
Update.
2003-03-01  Ulrich Drepper  <drepper@redhat.com>

	* descr.h (struct pthread): Move tid field to the front now that
	it is often used.

	* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S
	(__lll_mutex_timedlock_wait): Remove.
	(__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
	(__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
	(lll_unlock_wake_cb): Don't save and restore %esi.
	(__lll_unlock_wake): Add alignment.  Don't save, load, and restore
	%esi.
	(__lll_timedwait_tid): Add alignment.
	* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
	(__lll_unlock_wake): Add alignment.  Don't save, load, and restore
	%esi.
	(__lll_timedwait_tid): Removed.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
	(__pthread_cond_broadcast): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
	(pthread_barrier_wait): Don't save, load, and restore %esi for
	last thread.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
	(__pthread_cond_signal): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
	(__pthread_rwlock_unlock): Don't save, load, and restore %esi.
	* sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
	Don't save, load, and restore %esi.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S72
1 files changed, 2 insertions, 70 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
index 34840092ed..de0df72d78 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
@@ -69,8 +69,8 @@ __lll_lock_wait:
 	.globl	__lll_unlock_wake
 	.type	__lll_unlock_wake,@function
 	.hidden	__lll_unlock_wake
+	.align	16
 __lll_unlock_wake:
-	pushl	%esi
 	pushl	%ebx
 	pushl	%ecx
 	pushl	%edx
@@ -78,80 +78,12 @@ __lll_unlock_wake:
 	movl	%eax, %ebx
 1:	movl	$FUTEX_WAKE, %ecx
 	movl	$1, %edx	/* Wake one thread.  */
-	xorl	%esi, %esi
-	movl	%edx, (%ebx)	/* Stores '$1'.  */
 	movl	$SYS_futex, %eax
+	movl	%edx, (%ebx)	/* Stores '$1'.  */
 	ENTER_KERNEL
 
 	popl	%edx
 	popl	%ecx
 	popl	%ebx
-	popl	%esi
 	ret
 	.size	__lll_unlock_wake,.-__lll_unlock_wake
-
-
-	.globl	__lll_timedwait_tid
-	.type	__lll_timedwait_tid,@function
-	.hidden	__lll_timedwait_tid
-__lll_timedwait_tid:
-	pushl	%edi
-	pushl	%esi
-	pushl	%ebx
-	pushl	%ebp
-
-	movl	%eax, %ebp
-	movl	%edx, %edi
-	subl	$8, %esp
-
-	/* Get current time.  */
-2:	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	5f
-	addl	$1000000000, %edx
-	decl	%ecx
-5:	testl	%ecx, %ecx
-	js	6f		/* Time is already up.  */
-
-	movl	%ecx, (%esp)	/* Store relative timeout.  */
-	movl	%edx, 4(%esp)
-
-	movl	(%ebp), %edx
-	testl	%edx, %edx
-	jz	4f
-
-	movl	%esp, %esi
-	xorl	%ecx, %ecx	/* movl $FUTEX_WAIT, %ecx */
-	movl	%ebp, %ebx
-	movl	$SYS_futex, %eax
-	ENTER_KERNEL
-
-	movl	%eax, %edx
-
-	cmpl	$0, (%ebx)
-	jne	1f
-4:	xorl	%eax, %eax
-
-3:	addl	$8, %esp
-	popl	%ebp
-	popl	%ebx
-	popl	%esi
-	popl	%edi
-	ret
-
-1:	cmpl	$-ETIMEDOUT, %edx
-	jne	2b
-6:	movl	$ETIMEDOUT, %eax
-	jmp	3b
-	.size	__lll_timedwait_tid,.-__lll_timedwait_tid