about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-03-23 10:01:06 +0000
committerUlrich Drepper <drepper@redhat.com>2004-03-23 10:01:06 +0000
commite408880b8102768b2fb612a82589a143b04d6302 (patch)
treed26a78a852532cd39bf83212f025a2a5b7659dc5 /nptl/sysdeps/unix/sysv/linux
parent16b06b70b58461cca36a4aa83559cb89385076ce (diff)
downloadglibc-e408880b8102768b2fb612a82589a143b04d6302.tar.gz
glibc-e408880b8102768b2fb612a82589a143b04d6302.tar.xz
glibc-e408880b8102768b2fb612a82589a143b04d6302.zip
Update.
2004-03-23  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/ia64/pt-machine.h (BUSY_WAIT_NOP): Define.
	* sysdeps/x86_64/pt-machine.h (BUSY_WAIT_NOP): Likewise.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
index 9f089f8e6e..a9823d8d4b 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
@@ -102,8 +102,13 @@ extern int __lll_mutex_unlock_wake (int *__futex)
      __attribute ((regparm (1))) attribute_hidden;
 
 
+/* NB: in the lll_mutex_trylock macro we simply return the value in %eax
+   after the cmpxchg instruction.  In case the operation succeded this
+   value is zero.  In case the operation failed, the cmpxchg instruction
+   has loaded the current value of the memory work which is guaranteed
+   to be nonzero.  */
 #define lll_mutex_trylock(futex) \
-  ({ unsigned char ret;							      \
+  ({ int ret;								      \
      __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1"			      \
 		       : "=a" (ret), "=m" (futex)			      \
 		       : "r" (LLL_MUTEX_LOCK_INITIALIZER_LOCKED), "m" (futex),\