about summary refs log tree commit diff
path: root/nptl/sysdeps/i386
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-11-28 00:53:12 +0000
committerUlrich Drepper <drepper@redhat.com>2002-11-28 00:53:12 +0000
commitf78deea65fee170ed353a44764d53c55cced6000 (patch)
tree101e2929fc040529318fbfb55650dc43f93d0c87 /nptl/sysdeps/i386
parent6291ee3c5fa34e3b1a9df315f24268b91c8ec89b (diff)
downloadglibc-f78deea65fee170ed353a44764d53c55cced6000.tar.gz
glibc-f78deea65fee170ed353a44764d53c55cced6000.tar.xz
glibc-f78deea65fee170ed353a44764d53c55cced6000.zip
Update.
	* sysdeps/x86_64/pthreaddef.h: New file.

	* sysdeps/i386/pthreaddef.h (gettid): Removed.

	* sysdeps/x86_64/pthread_spin_init.c: New file.
	* sysdeps/x86_64/pthread_spin_lock.c: New file.
	* sysdeps/x86_64/pthread_spin_trylock.c: New file.
	* sysdeps/x86_64/pthread_spin_unlock.c: New file.

	* sysdeps/i386/i686/pthread_spin_trylock.S (pthread_spin_trylock):
	Add missing lock prefix.  Minute optimization.

	* tst-spin2.c (main): Also check successful trylock call.

	* sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use correct
	syscall.  Fix typo in case INTERNAL_SYSCALL is not used.

	* sysdeps/i386/pthread_spin_destroy.c: Moved to...
	* sysdeps/pthread/pthread_spin_destroy.c: ...here.  New file.

	* sysdeps/i386/pthread_sigmask.c: Removed.  Use the generic code.
	* sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Return correct
	value in case of an error.  Add support for INTERNAL_SYSCALL.
Diffstat (limited to 'nptl/sysdeps/i386')
-rw-r--r--nptl/sysdeps/i386/i686/pthread_spin_trylock.S14
-rw-r--r--nptl/sysdeps/i386/pthread_spin_destroy.c29
-rw-r--r--nptl/sysdeps/i386/pthreaddef.h4
3 files changed, 11 insertions, 36 deletions
diff --git a/nptl/sysdeps/i386/i686/pthread_spin_trylock.S b/nptl/sysdeps/i386/i686/pthread_spin_trylock.S
index 881976c4fe..2ab83e6969 100644
--- a/nptl/sysdeps/i386/i686/pthread_spin_trylock.S
+++ b/nptl/sysdeps/i386/i686/pthread_spin_trylock.S
@@ -19,6 +19,13 @@
 
 #define EBUSY	16
 
+
+#ifdef UP
+# define LOCK
+#else
+# define LOCK lock
+#endif
+
 	.globl	pthread_spin_trylock
 	.type	pthread_spin_trylock,@function
 	.align	16
@@ -26,9 +33,10 @@ pthread_spin_trylock:
 	movl	4(%esp), %edx
 	movl	$1, %eax
 	xorl	%ecx, %ecx
+	LOCK
 	cmpxchgl %ecx, (%edx)
-	movl	$EBUSY, %ecx
-	movl	$0, %eax
-	cmovne	%ecx, %eax
+	movl	$EBUSY, %edx
+	movl	%ecx, %eax
+	cmovne	%edx, %eax
 	ret
 	.size	pthread_spin_trylock,.-pthread_spin_trylock
diff --git a/nptl/sysdeps/i386/pthread_spin_destroy.c b/nptl/sysdeps/i386/pthread_spin_destroy.c
deleted file mode 100644
index 4d0109cf02..0000000000
--- a/nptl/sysdeps/i386/pthread_spin_destroy.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include "pthreadP.h"
-
-
-int
-pthread_spin_destroy (lock)
-     pthread_spinlock_t *lock;
-{
-  /* Nothing to do.  */
-  return 0;
-}
diff --git a/nptl/sysdeps/i386/pthreaddef.h b/nptl/sysdeps/i386/pthreaddef.h
index 6efa1b6d82..1fe9455848 100644
--- a/nptl/sysdeps/i386/pthreaddef.h
+++ b/nptl/sysdeps/i386/pthreaddef.h
@@ -49,7 +49,3 @@
       asm volatile ("movl %1, %%ebx; int $0x80"				      \
 		    :: "a" (__NR_exit), "r" (val));			      \
   }
-#define gettid()							      \
-  ({ int tid;								      \
-     __asm __volatile ("int $0x80" : "=a" (tid) : "0" (__NR_gettid));	      \
-     tid; })