aboutsummaryrefslogtreecommitdiff
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. */