diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-03-12 05:45:00 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-03-12 05:45:00 +0000 |
commit | 5a03acfe371193faace69e5517864ba3b9fc2b9f (patch) | |
tree | 7d92152ecdd4461da2692f4fa399609341eac44a /nptl/sysdeps/i386 | |
parent | b874af999547ee4e7688fc07710786131eef7d1b (diff) | |
download | glibc-5a03acfe371193faace69e5517864ba3b9fc2b9f.zip glibc-5a03acfe371193faace69e5517864ba3b9fc2b9f.tar.gz glibc-5a03acfe371193faace69e5517864ba3b9fc2b9f.tar.bz2 |
Update.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Fix asm syntax.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
* sysdeps/x86_64/tls.h (THREAD_SELF, THREAD_GETMEM, THREAD_GETMEM_NC,
THREAD_SETMEM, THREAD_SETMEM_NC): Correct asm syntax.
* allocatestack.c [! TLS_MULTIPLE_THREADS_IN_TCB] (allocate_stack):
Initialize *__libc_multiple_threads_ptr not __libc_multiple_threads.
* sysdeps/pthread/createthread.c [! TLS_MULTIPLE_THREADS_IN_TCB]
(create_thread): Likewise.
Define __pthread_multiple_threads and __libc_multiple_threads_ptr.
* init.c (__pthread_initialize_minimal_internal): Initialize
__libc_multiple_threads_ptr if necessary.
* pthreadP.h: Adjust prototype for __libc_pthread_init. Declare
__pthread_multiple_threads and __libc_multiple_threads_ptr.
* sysdeps/unix/sysv/linux/libc_pthread_init.c: Define
__libc_multiple_threads.
(__libc_pthread_init): Return pointer to __libc_pthread_init if
necessary.
* sysdeps/i386/tls.h (THREAD_SETMEM): Fix one-byte variant.
(THREAD_SETMEM_NC): Likewise.
* sysdeps/x86_64/pthread_spin_trylock.c: Removed.
* sysdeps/x86_64/pthread_spin_trylock.S: New file.
* sysdeps/x86_64/pthread_spin_unlock.c: Removed.
* sysdeps/x86_64/pthread_spin_unlock.S: New file.
* sysdeps/i386/i486/pthread_spin_trylock.S (pthread_spin_trylock):
Eliminate one entire instruction.
Diffstat (limited to 'nptl/sysdeps/i386')
-rw-r--r-- | nptl/sysdeps/i386/i486/pthread_spin_trylock.S | 11 | ||||
-rw-r--r-- | nptl/sysdeps/i386/tls.h | 4 |
2 files changed, 7 insertions, 8 deletions
diff --git a/nptl/sysdeps/i386/i486/pthread_spin_trylock.S b/nptl/sysdeps/i386/i486/pthread_spin_trylock.S index abda929..0a27312 100644 --- a/nptl/sysdeps/i386/i486/pthread_spin_trylock.S +++ b/nptl/sysdeps/i386/i486/pthread_spin_trylock.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -35,13 +35,12 @@ pthread_spin_trylock: xorl %ecx, %ecx LOCK cmpxchgl %ecx, (%edx) - movl $EBUSY, %edx - movl %ecx, %eax + movl $EBUSY, %eax #ifdef HAVE_CMOV - cmovnel %edx, %eax + cmovel %ecx, %eax #else - je 0f - movl %edx, %eax + jne 0f + movl %ecx, %eax 0: #endif ret diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h index 5b70586..6fb6adc 100644 --- a/nptl/sysdeps/i386/tls.h +++ b/nptl/sysdeps/i386/tls.h @@ -303,7 +303,7 @@ union user_desc_init /* Same as THREAD_SETMEM, but the member offset can be non-constant. */ # define THREAD_SETMEM(descr, member, value) \ ({ if (sizeof (descr->member) == 1) \ - asm volatile ("movb %0,%%gs:%P1" : \ + asm volatile ("movb %b0,%%gs:%P1" : \ : "iq" (value), \ "i" (offsetof (struct pthread, member))); \ else if (sizeof (descr->member) == 4) \ @@ -328,7 +328,7 @@ union user_desc_init /* Set member of the thread descriptor directly. */ # define THREAD_SETMEM_NC(descr, member, idx, value) \ ({ if (sizeof (descr->member[0]) == 1) \ - asm volatile ("movb %0,%%gs:%P1(%2)" : \ + asm volatile ("movb %b0,%%gs:%P1(%2)" : \ : "iq" (value), \ "i" (offsetof (struct pthread, member)), \ "r" (idx)); \ |