about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S5
5 files changed, 11 insertions, 8 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 122be6f714..f11a44ec43 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -108,8 +108,8 @@ __pthread_cond_timedwait:
 #endif
 	jne	3f
 
-4:	call	__pthread_enable_asynccancel
-	movl	%eax, (%esp)
+4:	movl	%esp, %eax
+	call	__pthread_enable_asynccancel_2
 
 	/* Get the current time.  */
 	movl	%ebx, %edx
@@ -145,6 +145,7 @@ __pthread_cond_timedwait:
 	subl	$wakeup_seq, %ebx
 	movl	%eax, %esi
 
+	movl	(%esp), %eax
 	call	__pthread_disable_asynccancel
 
 	/* Lock.  */
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
index b3a49e794a..c13c38290e 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
@@ -165,8 +165,8 @@ __pthread_cond_wait:
 #endif
 	jne	3f
 
-4:	call	__pthread_enable_asynccancel
-	movl	%eax, (%esp)
+4:	movl	%esp, %eax
+	call	__pthread_enable_asynccancel_2
 
 	movl	%esi, %ecx	/* movl $FUTEX_WAIT, %ecx */
 	movl	%edi, %edx
@@ -175,6 +175,7 @@ __pthread_cond_wait:
 	ENTER_KERNEL
 	subl	$wakeup_seq, %ebx
 
+	movl	(%esp), %eax
 	call	__pthread_disable_asynccancel
 
 	/* Lock.  */
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
index e7e1707a48..1585921ff0 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
@@ -49,7 +49,7 @@ __lll_lock_wait:
 	xorq	%r10, %r10	/* No timeout.  */
 
 1:
-	leal	-1(%esi), %edx	/* account for the preceeded xadd.  */
+	leaq	-1(%rsi), %rdx	/* account for the preceeded xadd.  */
 	movq	%r10, %rsi	/* movl $FUTEX_WAIT, %ecx */
 	movq	$SYS_futex, %rax
 	syscall
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
index a494e0efaa..55e4ec4682 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
@@ -50,7 +50,7 @@ __lll_mutex_lock_wait:
 	xorq	%r10, %r10	/* No timeout.  */
 
 1:
-	leal	1(%esi), %edx	/* account for the preceeded xadd.  */
+	leaq	1(%rsi), %rdx	/* account for the preceeded xadd.  */
 	movq	%r10, %rsi	/* movl $FUTEX_WAIT, %ecx */
 	movq	$SYS_futex, %rax
 	syscall
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index c15566fdf0..193cc081e1 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -153,9 +153,10 @@ __pthread_cond_wait:
 #endif
 	jne	3f
 
-4:	callq	__pthread_enable_asynccancel
-	movq	%rax, (%rsp)
+4:	movq	%rsp, %edi
+	callq	__pthread_enable_asynccancel_2
 
+	movq	8(%rsp), %rdi
 	xorq	%r10, %r10
 	movq	%r12, %rdx
 	addq	$wakeup_seq-cond_lock, %rdi