about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/ChangeLog4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S4
2 files changed, 8 insertions, 0 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index c75be9a91a..a10c6c12ec 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,9 @@
 2004-03-23  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+	(__lll_mutex_timedlock_wait): Preserve r8 and r9 since the
+	vgettimeofday call miht destroy the content.
+
 	* sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use hint
 	@pause in the loop.
 
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
index 2c918d7622..cf3dad18fb 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
@@ -78,6 +78,8 @@ __lll_mutex_timedlock_wait:
 	cmpq	$1000000000, 8(%rdx)
 	jae	3f
 
+	pushq	%r8
+	pushq	%r9
 	pushq	%r12
 	pushq	%r13
 	pushq	%r14
@@ -142,6 +144,8 @@ __lll_mutex_timedlock_wait:
 	popq	%r14
 	popq	%r13
 	popq	%r12
+	popq	%r9
+	popq	%r8
 	retq
 
 	/* Check whether the time expired.  */