diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-03-11 23:26:35 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-03-11 23:26:35 +0000 |
commit | 32a589b1ea1365c8651b0692d0350403fde7b6ff (patch) | |
tree | 77b94275bcf321370496c19d29267e8c66a8606d /nptl/sysdeps/unix/sysv/linux | |
parent | 3e976b962a84255b70bcf6d9751a9a35d3e987ab (diff) | |
download | glibc-32a589b1ea1365c8651b0692d0350403fde7b6ff.tar glibc-32a589b1ea1365c8651b0692d0350403fde7b6ff.tar.gz glibc-32a589b1ea1365c8651b0692d0350403fde7b6ff.tar.bz2 glibc-32a589b1ea1365c8651b0692d0350403fde7b6ff.zip |
Update.
* cancellation.c (__pthread_enable_asynccancel_2): New function.
* pthreadP.h: Declare __pthread_enable_asynccancel_2.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
(__pthread_cond_timedwait): Use __pthread_enable_asynccancel_2
instead of __pthread_enable_asynccancel.
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
(__pthread_cond_wait): Likewise.
* sysdeps/pthread/pthread_cond_timedwait.c
(__pthread_cond_timedwait): Likewise.
* sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux')
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 |