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.
This commit is contained in:
Ulrich Drepper 2004-03-23 10:01:06 +00:00
parent 16b06b70b5
commit e408880b81
5 changed files with 22 additions and 3 deletions

View File

@ -1,3 +1,8 @@
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.

View File

@ -1,6 +1,6 @@
/* 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
@ -127,4 +127,7 @@ testandset (int *spinlock)
return ret;
}
/* Indicate that we are looping. */
#define BUSY_WAIT_NOP __asm__ ("hint @pause")
#endif /* pt-machine.h */

View File

@ -1,6 +1,6 @@
/* 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
@ -219,4 +219,7 @@ extern int __arch_prctl (int __code, unsigned long __addr);
/* 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 */

View File

@ -1,5 +1,8 @@
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.

View File

@ -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),\