diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sparc')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h | 10 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h index 75a4eb9469..c7800558bb 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. @@ -100,7 +100,13 @@ __##syscall_name##_nocancel: \ #elif !defined __ASSEMBLER__ -# define SINGLE_THREAD_P (1) +# ifdef IS_IN_rtld +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P (1) +# endif # define NO_CANCELLATION 1 #endif diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h index dd263a597c..b422f8acee 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h @@ -98,7 +98,13 @@ __##syscall_name##_nocancel: \ #elif !defined __ASSEMBLER__ -# define SINGLE_THREAD_P (1) +# ifdef IS_IN_rtld +# define SINGLE_THREAD_P \ + __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ + header.multiple_threads) == 0, 1) +# else +# define SINGLE_THREAD_P (1) +# endif # define NO_CANCELLATION 1 #endif |