about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h23
2 files changed, 11 insertions, 20 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 6bbd304fe2..34fd724d9b 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,11 @@
+2007-08-05  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
+	Don't use CGOTSETUP and CGOTRESTORE macros.
+	(CGOTSETUP, CGOTRESTORE): Remove.
+	<IS_IN_rtld> (CENABLE, CDISABLE): Don't use JUMPTARGET, branch to
+	@local symbol.
+
 2007-08-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
 
 	* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
index 3752abc870..88b24e7d95 100644
--- a/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
@@ -1,5 +1,5 @@
 /* Cancellable system call stubs.  Linux/PowerPC version.
-   Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>, 2003.
 
@@ -44,7 +44,6 @@
     mflr 9;								\
     stw 9,52(1);							\
     cfi_offset (lr, 4);							\
-    CGOTSETUP;								\
     DOCARGS_##args;	/* save syscall args around CENABLE.  */	\
     CENABLE;								\
     stw 3,16(1);	/* store CENABLE return value (MASK).  */	\
@@ -58,7 +57,6 @@
     lwz 4,52(1);							\
     lwz 0,12(1);	/* restore CR/R3. */				\
     lwz 3,8(1);								\
-    CGOTRESTORE;							\
     mtlr 4;								\
     mtcr 0;								\
     addi 1,1,48;
@@ -84,9 +82,6 @@
 # define DOCARGS_6	stw 8,40(1); DOCARGS_5
 # define UNDOCARGS_6	lwz 8,40(1); UNDOCARGS_5
 
-# define CGOTSETUP
-# define CGOTRESTORE
-
 # ifdef IS_IN_libpthread
 #  define CENABLE	bl __pthread_enable_asynccancel@local
 #  define CDISABLE	bl __pthread_disable_asynccancel@local
@@ -94,20 +89,8 @@
 #  define CENABLE	bl __libc_enable_asynccancel@local
 #  define CDISABLE	bl __libc_disable_asynccancel@local
 # elif defined IS_IN_librt
-#  define CENABLE	bl JUMPTARGET(__librt_enable_asynccancel)
-#  define CDISABLE	bl JUMPTARGET(__librt_disable_asynccancel)
-#  if defined HAVE_AS_REL16 && defined PIC
-#   undef CGOTSETUP
-#   define CGOTSETUP							\
-    bcl 20,31,1f;							\
- 1: stw 30,44(1);							\
-    mflr 30;								\
-    addis 30,30,_GLOBAL_OFFSET_TABLE-1b@ha;				\
-    addi 30,30,_GLOBAL_OFFSET_TABLE-1b@l
-#   undef CGOTRESTORE
-#   define CGOTRESTORE							\
-    lwz 30,44(1)
-#  endif
+#  define CENABLE	bl __librt_enable_asynccancel@local
+#  define CDISABLE	bl __librt_disable_asynccancel@local
 # else
 #  error Unsupported library
 # endif