+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.
+
2004-03-12 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/bits/local_lim.h: Add HOST_NAME_MAX.
/* Machine-dependent pthreads configuration and inline functions.
IA-64 version.
- Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
return ret;
}
+/* Indicate that we are looping. */
+#define BUSY_WAIT_NOP __asm__ ("hint @pause")
+
#endif /* pt-machine.h */
/* Machine-dependent pthreads configuration and inline functions.
x86-64 version.
- Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
/* Maximum size of the stack if the rlimit is unlimited. */
#define ARCH_STACK_MAX_SIZE 32*1024*1024
+/* The ia32e really want some help to prevent overheating. */
+#define BUSY_WAIT_NOP __asm__ ("rep; nop")
+
#endif /* pt-machine.h */
2004-03-23 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
+ No need to restrict type of ret. Make it int. Add comment.
+
+ * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
Remove unnecessary setne instruction.
2004-03-22 Jakub Jelinek <jakub@redhat.com>
__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),\