From 0ecb606cb6cf65de1d9fc8a919bceb4be476c602 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 12 Jul 2007 18:26:36 +0000 Subject: 2.5-18.1 --- .../unix/sysv/linux/x86_64/pthread_cond_broadcast.S | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S') diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S index e8d7bd9bb6..006de2696e 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -21,6 +21,7 @@ #include #include #include +#include #ifdef UP # define LOCK @@ -80,11 +81,15 @@ __pthread_cond_broadcast: 8: cmpq $-1, %r8 je 9f + /* XXX: The kernel so far doesn't support requeue to PI futex. */ + testl $PI_BIT, MUTEX_KIND(%r8) + jne 9f + /* Wake up all threads. */ - movq $FUTEX_CMP_REQUEUE, %rsi - movq $SYS_futex, %rax + movl $FUTEX_CMP_REQUEUE, %esi + movl $SYS_futex, %eax movl $1, %edx - movq $0x7fffffff, %r10 + movl $0x7fffffff, %r10d syscall /* For any kind of error, which mainly is EAGAIN, we try again @@ -128,9 +133,9 @@ __pthread_cond_broadcast: jmp 8b 9: /* The futex requeue functionality is not available. */ - movq $0x7fffffff, %rdx - movq $FUTEX_WAKE, %rsi - movq $SYS_futex, %rax + movl $0x7fffffff, %edx + movl $FUTEX_WAKE, %esi + movl $SYS_futex, %eax syscall jmp 10b .size __pthread_cond_broadcast, .-__pthread_cond_broadcast -- cgit v1.2.3