aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-08-31 18:10:47 +0000
committerUlrich Drepper <drepper@redhat.com>2003-08-31 18:10:47 +0000
commitcd2fbe58e617407e79b64c68cef34224803aa910 (patch)
treeb07a2d7ac749cf125426c8deb41668deeaf6d2c8
parentb5bc52efe77e9f0deeb2ee141ea066ab18c927da (diff)
downloadglibc-cd2fbe58e617407e79b64c68cef34224803aa910.tar.xz
glibc-cd2fbe58e617407e79b64c68cef34224803aa910.zip
Update.
2003-08-31 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET. * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp. (CFLAGS-clnt_perr.c): Likewise.
-rw-r--r--ChangeLog6
-rw-r--r--include/setjmp.h1
-rw-r--r--nptl/ChangeLog33
-rw-r--r--nptl/init.c2
-rw-r--r--nptl/sysdeps/sparc/Makefile3
-rw-r--r--nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c40
-rw-r--r--nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c29
-rw-r--r--nptl/sysdeps/sparc/sparc32/pthreaddef.h40
-rw-r--r--nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c39
-rw-r--r--nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c1
-rw-r--r--nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c1
-rw-r--r--nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c39
-rw-r--r--nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c34
-rw-r--r--nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c30
-rw-r--r--nptl/sysdeps/sparc/sparc64/pthreaddef.h40
-rw-r--r--nptl/sysdeps/sparc/tcb-offsets.sym4
-rw-r--r--nptl/sysdeps/sparc/td_ta_map_lwp2thr.c44
-rw-r--r--nptl/sysdeps/sparc/tls.h119
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/aio_cancel.c33
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h193
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h44
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/fork.c29
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h222
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/pt-vfork.S28
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c94
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h107
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/Versions7
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h101
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c1
-rw-r--r--sunrpc/Makefile1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sysdep.h18
-rw-r--r--sysdeps/x86_64/bsd-_setjmp.S4
36 files changed, 1389 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index bf2e40267e..aee96cd554 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-08-31 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/bsd-_setjmp.S: Use HIDDEN_JUMPTARGET.
+ * include/setjmp.h: Add libc_hidden_proto for __sigsetjmp.
+
2003-08-30 Jakub Jelinek <jakub@redhat.com>
* sysdeps/generic/sysdep.h (cfi_window_save, CFI_WINDOW_SAVE): Define.
@@ -37,6 +42,7 @@
* sunrpc/Makefile (CFLAGS-auth_unix.c): Add -fexceptions.
(CFLAGS-key_call.c): Likewise.
(CFLAGS-pmap_rmt.c): Likewise.
+ (CFLAGS-clnt_perr.c): Likewise.
* sunrpc/rpc/auth.h: Remove serveral __THROW.
* inet/Makefile (CFLAGS-gethstbyad_r.c): Add -fexceptions.
diff --git a/include/setjmp.h b/include/setjmp.h
index edb2430f81..6863f51c11 100644
--- a/include/setjmp.h
+++ b/include/setjmp.h
@@ -22,5 +22,6 @@ extern void __libc_longjmp (sigjmp_buf env, int val)
libc_hidden_proto (__libc_longjmp)
libc_hidden_proto (_setjmp)
+libc_hidden_proto (__sigsetjmp)
#endif
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 3961b0cbcb..0e78e123ce 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,36 @@
+2003-08-30 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: New file.
+ * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: New file.
+ * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: New file.
+ * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: New file.
+ * sysdeps/unix/sysv/linux/sparc/pthread_once.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: New file.
+ * sysdeps/unix/sysv/linux/sparc/fork.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/aio_cancel.c: New file.
+ * sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c: New file.
+ * sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c: New file.
+ * sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c: New file.
+ * sysdeps/sparc/sparc32/pthread_spin_lock.c: New file.
+ * sysdeps/sparc/sparc32/pthread_spin_trylock.c: New file.
+ * sysdeps/sparc/sparc32/pthreaddef.h: New file.
+ * sysdeps/sparc/sparc64/pthread_spin_lock.c: New file.
+ * sysdeps/sparc/sparc64/pthread_spin_trylock.c: New file.
+ * sysdeps/sparc/sparc64/pthread_spin_unlock.c: New file.
+ * sysdeps/sparc/sparc64/pthreaddef.h: New file.
+ * sysdeps/sparc/tls.h: New file.
+ * sysdeps/sparc/tcb-offsets.sym: New file.
+ * sysdeps/sparc/Makefile: New file.
+ * sysdeps/sparc/td_ta_map_lwp2thr.c: New file.
+ * init.c [__sparc__] (__NR_set_tid_address): Define.
+
2003-08-29 Jakub Jelinek <jakub@redhat.com>
* sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock,
diff --git a/nptl/init.c b/nptl/init.c
index 1f60e92aeb..c7d26acff7 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -46,6 +46,8 @@
# define __NR_set_tid_address 218
#elif defined __powerpc__
# define __NR_set_tid_address 232
+#elif defined __sparc__
+# define __NR_set_tid_address 166
#else
# error "define __NR_set_tid_address"
#endif
diff --git a/nptl/sysdeps/sparc/Makefile b/nptl/sysdeps/sparc/Makefile
new file mode 100644
index 0000000000..81bddf688c
--- /dev/null
+++ b/nptl/sysdeps/sparc/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),csu)
+gen-as-const-headers += tcb-offsets.sym
+endif
diff --git a/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c b/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c
new file mode 100644
index 0000000000..d3c6e3049a
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ 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_lock (pthread_spinlock_t *lock)
+{
+ __asm __volatile
+ ("1: ldstub [%0], %%g2\n"
+ " orcc %%g2, 0x0, %%g0\n"
+ " bne,a 2f\n"
+ " ldub [%0], %%g2\n"
+ ".subsection 2\n"
+ "2: orcc %%g2, 0x0, %%g0\n"
+ " bne,a 2b\n"
+ " ldub [%0], %%g2\n"
+ " b,a 1b\n"
+ ".previous"
+ : /* no outputs */
+ : "r" (lock)
+ : "g2", "memory", "cc");
+ return 0;
+}
diff --git a/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c b/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c
new file mode 100644
index 0000000000..bcc3158fdf
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ 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 <errno.h>
+#include "pthreadP.h"
+
+int
+pthread_spin_trylock (pthread_spinlock_t *lock)
+{
+ int res;
+ __asm __volatile ("ldstub [%1], %0" : "=r" (res) : "r" (lock) : "memory");
+ return res == 0 ? 0 : EBUSY;
+}
diff --git a/nptl/sysdeps/sparc/sparc32/pthreaddef.h b/nptl/sysdeps/sparc/sparc32/pthreaddef.h
new file mode 100644
index 0000000000..9908df9e93
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc32/pthreaddef.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2003 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
+ 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. */
+
+/* Default stack size. */
+#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
+
+/* Required stack pointer alignment at beginning. */
+#define STACK_ALIGN 16
+
+/* Minimal stack size after allocating thread descriptor and guard size. */
+#define MINIMAL_REST_STACK 2048
+
+/* Alignment requirement for TCB. */
+#define TCB_ALIGNMENT 16
+
+
+/* Location of current stack frame. */
+#define CURRENT_STACK_FRAME (stack_pointer + (2 * 64))
+register char *stack_pointer __asm__("%sp");
+
+/* XXX Until we have a better place keep the definitions here. */
+
+/* While there is no such syscall. */
+#define __exit_thread_inline(val) \
+ INLINE_SYSCALL (exit, 1, (val))
diff --git a/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c b/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c
new file mode 100644
index 0000000000..8880f535b1
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ 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_lock (pthread_spinlock_t *lock)
+{
+ __asm __volatile
+ ("1: ldstub [%0], %%g2\n"
+ " brnz,pn %%g2, 2f\n"
+ " membar #StoreLoad | #StoreStore\n"
+ ".subsection 2\n"
+ "2: ldub [%0], %%g2\n"
+ " brnz,pt %%g2, 2b\n"
+ " membar #LoadLoad\n"
+ " b,a,pt %%xcc, 1b\n"
+ ".previous"
+ : /* no outputs */
+ : "r" (lock)
+ : "g2", "memory");
+ return 0;
+}
diff --git a/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c b/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c
new file mode 100644
index 0000000000..3b20a21808
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c
@@ -0,0 +1 @@
+#include <sparc64/pthread_spin_trylock.c>
diff --git a/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c b/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c
new file mode 100644
index 0000000000..482cbe3d77
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c
@@ -0,0 +1 @@
+#include <sparc64/pthread_spin_unlock.c>
diff --git a/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c b/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c
new file mode 100644
index 0000000000..77171d9b9a
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ 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_lock (pthread_spinlock_t *lock)
+{
+ __asm __volatile
+ ("1: ldstub [%0], %%g5\n"
+ " brnz,pn %%g5, 2f\n"
+ " membar #StoreLoad | #StoreStore\n"
+ ".subsection 2\n"
+ "2: ldub [%0], %%g5\n"
+ " brnz,pt %%g5, 2b\n"
+ " membar #LoadLoad\n"
+ " b,a,pt %%xcc, 1b\n"
+ ".previous"
+ : /* no outputs */
+ : "r" (lock)
+ : "g5", "memory");
+ return 0;
+}
diff --git a/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c b/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c
new file mode 100644
index 0000000000..2bda809dac
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ 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 <errno.h>
+#include "pthreadP.h"
+
+int
+pthread_spin_trylock (pthread_spinlock_t *lock)
+{
+ int res;
+ __asm __volatile
+ ("ldstub [%1], %0\n"
+ "membar #StoreLoad | #StoreStore"
+ : "=r" (res)
+ : "r" (lock)
+ : "memory");
+ return res == 0 ? 0 : EBUSY;
+}
diff --git a/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c b/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c
new file mode 100644
index 0000000000..7037675a23
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c
@@ -0,0 +1,30 @@
+/* pthread_spin_unlock -- unlock a spin lock. Generic version.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Paul Mackerras <paulus@au.ibm.com&