This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-389-ga4a43a9


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  a4a43a907c1e7b610715848f5a69e937a9f22903 (commit)
       via  76f71081cd3fe355b9c18d1fc5e87643c788cfac (commit)
       via  6b814909b41476ad594547b5f2289889a39cc0dd (commit)
      from  9cd4d4abdca1329cde5ee3dcc963b8533678551e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a4a43a907c1e7b610715848f5a69e937a9f22903

commit a4a43a907c1e7b610715848f5a69e937a9f22903
Author: Torvald Riegel <triegel@redhat.com>
Date:   Wed Dec 17 19:09:04 2014 +0100

    i386: Move futex functions from lowlevellock.h to lowlevellock-futex.h.

diff --git a/ChangeLog b/ChangeLog
index 76f5a3c..7d6d2de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2014-12-19  Torvald Riegel  <triegel@redhat.com>
 
+	* sysdeps/unix/sysv/linux/i386/lowlevellock-futex.h: New file.
+	Contains futex constants and functions moved over from ...
+	* sysdeps/unix/sysv/linux/i386/lowlevellock.h: ... here.  Include
+	<lowlevellock-futex.h>.
+	(lll_wait_tid): Use lll_futex_wait instead of assembly code.
+	(lll_timedwait_tid): Add comments and parentheses around macro
+	arguments.
+
+2014-12-19  Torvald Riegel  <triegel@redhat.com>
+
 	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Include
 	<lowlevellock-futex.h>.  Remove FUTEX_* constants defined there.
 	(__lll_private_flag): Remove.
diff --git a/sysdeps/unix/sysv/linux/i386/lowlevellock-futex.h b/sysdeps/unix/sysv/linux/i386/lowlevellock-futex.h
new file mode 100644
index 0000000..d7f8728
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/lowlevellock-futex.h
@@ -0,0 +1,137 @@
+/* Low-level locking access to futex facilities.  Linux/i386 version.
+   Copyright (C) 2014 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, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LOWLEVELLOCK_FUTEX_H
+#define _LOWLEVELLOCK_FUTEX_H	1
+
+#define FUTEX_WAIT		0
+#define FUTEX_WAKE		1
+#define FUTEX_CMP_REQUEUE	4
+#define FUTEX_WAKE_OP		5
+#define FUTEX_LOCK_PI		6
+#define FUTEX_UNLOCK_PI		7
+#define FUTEX_TRYLOCK_PI	8
+#define FUTEX_WAIT_BITSET	9
+#define FUTEX_WAKE_BITSET	10
+#define FUTEX_WAIT_REQUEUE_PI	11
+#define FUTEX_CMP_REQUEUE_PI	12
+#define FUTEX_PRIVATE_FLAG	128
+#define FUTEX_CLOCK_REALTIME	256
+
+#define FUTEX_BITSET_MATCH_ANY	0xffffffff
+
+#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE	((4 << 24) | 1)
+
+/* Values for 'private' parameter of locking macros.  Yes, the
+   definition seems to be backwards.  But it is not.  The bit will be
+   reversed before passing to the system call.  */
+#define LLL_PRIVATE	0
+#define LLL_SHARED	FUTEX_PRIVATE_FLAG
+
+
+#if IS_IN (libc) || IS_IN (rtld)
+/* In libc.so or ld.so all futexes are private.  */
+# ifdef __ASSUME_PRIVATE_FUTEX
+#  define __lll_private_flag(fl, private) \
+  ((fl) | FUTEX_PRIVATE_FLAG)
+# else
+#  define __lll_private_flag(fl, private) \
+  ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
+# endif
+#else
+# ifdef __ASSUME_PRIVATE_FUTEX
+#  define __lll_private_flag(fl, private) \
+  (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
+# else
+#  define __lll_private_flag(fl, private) \
+  (__builtin_constant_p (private)					      \
+   ? ((private) == 0							      \
+      ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))	      \
+      : (fl))								      \
+   : ({ unsigned int __fl = ((private) ^ FUTEX_PRIVATE_FLAG);		      \
+	asm ("andl %%gs:%P1, %0" : "+r" (__fl)				      \
+	     : "i" (offsetof (struct pthread, header.private_futex)));	      \
+	__fl | (fl); }))
+# endif
+#endif
+
+
+#ifndef __ASSEMBLER__
+
+/* To avoid naming conflicts with lowlevellock.h, use a different prefix
+   here.  */
+#ifdef PIC
+# define LLLF_EBX_LOAD	"xchgl %2, %%ebx\n"
+# define LLLF_EBX_REG	"D"
+#else
+# define LLLF_EBX_LOAD
+# define LLLF_EBX_REG	"b"
+#endif
+
+#ifdef I386_USE_SYSENTER
+# ifdef SHARED
+#  define LLLF_ENTER_KERNEL	"call *%%gs:%P6\n\t"
+# else
+#  define LLLF_ENTER_KERNEL	"call *_dl_sysinfo\n\t"
+# endif
+#else
+# define LLLF_ENTER_KERNEL	"int $0x80\n\t"
+#endif
+
+
+#define lll_futex_wait(futex, val, private) \
+  lll_futex_timed_wait (futex, val, NULL, private)
+
+
+#define lll_futex_timed_wait(futex, val, timeout, private) \
+  ({									      \
+    int __status;							      \
+    register __typeof (val) _val asm ("edx") = (val);			      \
+    __asm __volatile (LLLF_EBX_LOAD					      \
+		      LLLF_ENTER_KERNEL					      \
+		      LLLF_EBX_LOAD					      \
+		      : "=a" (__status)					      \
+		      : "0" (SYS_futex), LLLF_EBX_REG (futex), "S" (timeout),  \
+			"c" (__lll_private_flag (FUTEX_WAIT, private)),	      \
+			"d" (_val), "i" (offsetof (tcbhead_t, sysinfo))	      \
+		      : "memory");					      \
+    __status;								      \
+  })
+
+
+#define lll_futex_wake(futex, nr, private) \
+  ({									      \
+    int __status;							      \
+    register __typeof (nr) _nr asm ("edx") = (nr);			      \
+    LIBC_PROBE (lll_futex_wake, 3, futex, nr, private);                       \
+    __asm __volatile (LLLF_EBX_LOAD					      \
+		      LLLF_ENTER_KERNEL					      \
+		      LLLF_EBX_LOAD					      \
+		      : "=a" (__status)					      \
+		      : "0" (SYS_futex), LLLF_EBX_REG (futex),		      \
+			"c" (__lll_private_flag (FUTEX_WAKE, private)),	      \
+			"d" (_nr),					      \
+			"i" (0) /* phony, to align next arg's number */,      \
+			"i" (offsetof (tcbhead_t, sysinfo)));		      \
+    __status;								      \
+  })
+
+
+#endif  /* !__ASSEMBLER__ */
+
+#endif	/* lowlevellock-futex.h */
diff --git a/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/sysdeps/unix/sysv/linux/i386/lowlevellock.h
index 1032f4b..c3528a8 100644
--- a/sysdeps/unix/sysv/linux/i386/lowlevellock.h
+++ b/sysdeps/unix/sysv/linux/i386/lowlevellock.h
@@ -45,57 +45,10 @@
 # endif
 #endif
 
+#include <lowlevellock-futex.h>
+
+/* XXX Remove when no assembler code uses futexes anymore.  */
 #define SYS_futex		240
-#define FUTEX_WAIT		0
-#define FUTEX_WAKE		1
-#define FUTEX_CMP_REQUEUE	4
-#define FUTEX_WAKE_OP		5
-#define FUTEX_LOCK_PI		6
-#define FUTEX_UNLOCK_PI		7
-#define FUTEX_TRYLOCK_PI	8
-#define FUTEX_WAIT_BITSET	9
-#define FUTEX_WAKE_BITSET	10
-#define FUTEX_WAIT_REQUEUE_PI	11
-#define FUTEX_CMP_REQUEUE_PI	12
-#define FUTEX_PRIVATE_FLAG	128
-#define FUTEX_CLOCK_REALTIME	256
-
-#define FUTEX_BITSET_MATCH_ANY	0xffffffff
-
-#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE	((4 << 24) | 1)
-
-/* Values for 'private' parameter of locking macros.  Yes, the
-   definition seems to be backwards.  But it is not.  The bit will be
-   reversed before passing to the system call.  */
-#define LLL_PRIVATE	0
-#define LLL_SHARED	FUTEX_PRIVATE_FLAG
-
-
-#if IS_IN (libc) || IS_IN (rtld)
-/* In libc.so or ld.so all futexes are private.  */
-# ifdef __ASSUME_PRIVATE_FUTEX
-#  define __lll_private_flag(fl, private) \
-  ((fl) | FUTEX_PRIVATE_FLAG)
-# else
-#  define __lll_private_flag(fl, private) \
-  ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
-# endif
-#else
-# ifdef __ASSUME_PRIVATE_FUTEX
-#  define __lll_private_flag(fl, private) \
-  (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
-# else
-#  define __lll_private_flag(fl, private) \
-  (__builtin_constant_p (private)					      \
-   ? ((private) == 0							      \
-      ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))	      \
-      : (fl))								      \
-   : ({ unsigned int __fl = ((private) ^ FUTEX_PRIVATE_FLAG);		      \
-	asm ("andl %%gs:%P1, %0" : "+r" (__fl)				      \
-	     : "i" (offsetof (struct pthread, header.private_futex)));	      \
-	__fl | (fl); }))
-# endif
-#endif
 
 #ifndef __ASSEMBLER__
 
@@ -126,43 +79,6 @@
 /* Delay in spinlock loop.  */
 #define BUSY_WAIT_NOP	asm ("rep; nop")
 
-#define lll_futex_wait(futex, val, private) \
-  lll_futex_timed_wait (futex, val, NULL, private)
-
-
-#define lll_futex_timed_wait(futex, val, timeout, private) \
-  ({									      \
-    int __status;							      \
-    register __typeof (val) _val asm ("edx") = (val);			      \
-    __asm __volatile (LLL_EBX_LOAD					      \
-		      LLL_ENTER_KERNEL					      \
-		      LLL_EBX_LOAD					      \
-		      : "=a" (__status)					      \
-		      : "0" (SYS_futex), LLL_EBX_REG (futex), "S" (timeout),  \
-			"c" (__lll_private_flag (FUTEX_WAIT, private)),	      \
-			"d" (_val), "i" (offsetof (tcbhead_t, sysinfo))	      \
-		      : "memory");					      \
-    __status;								      \
-  })
-
-
-#define lll_futex_wake(futex, nr, private) \
-  ({									      \
-    int __status;							      \
-    register __typeof (nr) _nr asm ("edx") = (nr);			      \
-    LIBC_PROBE (lll_futex_wake, 3, futex, nr, private);                       \
-    __asm __volatile (LLL_EBX_LOAD					      \
-		      LLL_ENTER_KERNEL					      \
-		      LLL_EBX_LOAD					      \
-		      : "=a" (__status)					      \
-		      : "0" (SYS_futex), LLL_EBX_REG (futex),		      \
-			"c" (__lll_private_flag (FUTEX_WAKE, private)),	      \
-			"d" (_nr),					      \
-			"i" (0) /* phony, to align next arg's number */,      \
-			"i" (offsetof (tcbhead_t, sysinfo)));		      \
-    __status;								      \
-  })
-
 
 /* NB: in the lll_trylock macro we simply return the value in %eax
    after the cmpxchg instruction.  In case the operation succeded this
@@ -381,43 +297,37 @@ extern int __lll_timedlock_elision (int *futex, short *adapt_count,
   (futex != LLL_LOCK_INITIALIZER)
 
 /* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
-   wakeup when the clone terminates.  The memory location contains the
-   thread ID while the clone is running and is reset to zero
-   afterwards.
-
-   The macro parameter must not have any side effect.  */
+   wake-up when the clone terminates.  The memory location contains the
+   thread ID while the clone is running and is reset to zero by the kernel
+   afterwards.  The kernel up to version 3.16.3 does not use the private futex
+   operations for futex wake-up when the clone terminates.  */
 #define lll_wait_tid(tid) \
-  do {									      \
-    int __ignore;							      \
-    register __typeof (tid) _tid asm ("edx") = (tid);			      \
-    if (_tid != 0)							      \
-      __asm __volatile (LLL_EBX_LOAD					      \
-			"1:\tmovl %1, %%eax\n\t"			      \
-			LLL_ENTER_KERNEL				      \
-			"cmpl $0, (%%ebx)\n\t"				      \
-			"jne 1b\n\t"					      \
-			LLL_EBX_LOAD					      \
-			: "=&a" (__ignore)				      \
-			: "i" (SYS_futex), LLL_EBX_REG (&tid), "S" (0),	      \
-			  "c" (FUTEX_WAIT), "d" (_tid),			      \
-			  "i" (offsetof (tcbhead_t, sysinfo))		      \
-			: "memory");					      \
+  do {					\
+    __typeof (tid) __tid;		\
+    while ((__tid = (tid)) != 0)	\
+      lll_futex_wait (&(tid), __tid, LLL_SHARED);\
   } while (0)
 
 extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime)
      __attribute__ ((regparm (2))) attribute_hidden;
+
+/* As lll_wait_tid, but with a timeout.  If the timeout occurs then return
+   ETIMEDOUT.  If ABSTIME is invalid, return EINVAL.
+   XXX Note that this differs from the generic version in that we do the
+   error checking here and not in __lll_timedwait_tid.  */
 #define lll_timedwait_tid(tid, abstime) \
   ({									      \
     int __result = 0;							      \
-    if (tid != 0)							      \
+    if ((tid) != 0)							      \
       {									      \
-	if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)	      \
+	if ((abstime)->tv_nsec < 0 || (abstime)->tv_nsec >= 1000000000)	      \
 	  __result = EINVAL;						      \
 	else								      \
-	  __result = __lll_timedwait_tid (&tid, abstime);		      \
+	  __result = __lll_timedwait_tid (&(tid), (abstime));		      \
       }									      \
     __result; })
 
+
 extern int __lll_lock_elision (int *futex, short *adapt_count, int private)
   attribute_hidden;
 

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=76f71081cd3fe355b9c18d1fc5e87643c788cfac

commit 76f71081cd3fe355b9c18d1fc5e87643c788cfac
Author: Torvald Riegel <triegel@redhat.com>
Date:   Wed Dec 17 18:55:19 2014 +0100

    Use generic lowlevellock-futex.h in x86_64 lowlevellock.h.

diff --git a/ChangeLog b/ChangeLog
index 977cdad..76f5a3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2014-12-19  Torvald Riegel  <triegel@redhat.com>
 
+	* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Include
+	<lowlevellock-futex.h>.  Remove FUTEX_* constants defined there.
+	(__lll_private_flag): Remove.
+	(lll_futex_wait): Likewise.
+	(lll_futex_timed_wait): Likewise.
+	(lll_futex_wake): Likewise.
+	(lll_futex_requeue): Likewise.
+	(lll_wait_tid): Use lll_futex_wait instead of assembly code.
+	(__lll_timedwait_tid): Spell out argument names.
+	(lll_timedwait_tid): Add comments and parentheses around macro
+	arguments.
+	* sysdeps/unix/sysv/linux/lowlevellock-futex.h: Make FUTEX_* constants,
+	LLL_SHARED and LLL_PRIVATE usable from assembly code.
+
+2014-12-19  Torvald Riegel  <triegel@redhat.com>
+
 	* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove file.
 	* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
 	* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
diff --git a/sysdeps/unix/sysv/linux/lowlevellock-futex.h b/sysdeps/unix/sysv/linux/lowlevellock-futex.h
index 8927661..907b4c7 100644
--- a/sysdeps/unix/sysv/linux/lowlevellock-futex.h
+++ b/sysdeps/unix/sysv/linux/lowlevellock-futex.h
@@ -19,10 +19,11 @@
 #ifndef _LOWLEVELLOCK_FUTEX_H
 #define _LOWLEVELLOCK_FUTEX_H	1
 
+#ifndef __ASSEMBLER__
 #include <sysdep.h>
 #include <tls.h>
 #include <kernel-features.h>
-
+#endif
 
 #define FUTEX_WAIT		0
 #define FUTEX_WAKE		1
@@ -48,6 +49,7 @@
 #define LLL_PRIVATE	0
 #define LLL_SHARED	FUTEX_PRIVATE_FLAG
 
+#ifndef __ASSEMBLER__
 
 #if IS_IN (libc) || IS_IN (rtld)
 /* In libc.so or ld.so all futexes are private.  */
@@ -133,5 +135,6 @@
 					 private),                      \
 		     nr_wake, nr_move, mutex, val)
 
+#endif  /* !__ASSEMBLER__  */
 
 #endif  /* lowlevellock-futex.h */
diff --git a/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h b/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
index 2f0cf5c..56570ee 100644
--- a/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
+++ b/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
@@ -45,59 +45,13 @@
 # endif
 #endif
 
+#include <lowlevellock-futex.h>
+
+/* XXX Remove when no assembler code uses futexes anymore.  */
 #define SYS_futex		__NR_futex
-#define FUTEX_WAIT		0
-#define FUTEX_WAKE		1
-#define FUTEX_CMP_REQUEUE	4
-#define FUTEX_WAKE_OP		5
-#define FUTEX_LOCK_PI		6
-#define FUTEX_UNLOCK_PI		7
-#define FUTEX_TRYLOCK_PI	8
-#define FUTEX_WAIT_BITSET	9
-#define FUTEX_WAKE_BITSET	10
-#define FUTEX_WAIT_REQUEUE_PI	11
-#define FUTEX_CMP_REQUEUE_PI	12
-#define FUTEX_PRIVATE_FLAG	128
-#define FUTEX_CLOCK_REALTIME	256
-
-#define FUTEX_BITSET_MATCH_ANY	0xffffffff
-
-#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE	((4 << 24) | 1)
-
-/* Values for 'private' parameter of locking macros.  Yes, the
-   definition seems to be backwards.  But it is not.  The bit will be
-   reversed before passing to the system call.  */
-#define LLL_PRIVATE	0
-#define LLL_SHARED	FUTEX_PRIVATE_FLAG
 
 #ifndef __ASSEMBLER__
 
-#if IS_IN (libc) || IS_IN (rtld)
-/* In libc.so or ld.so all futexes are private.  */
-# ifdef __ASSUME_PRIVATE_FUTEX
-#  define __lll_private_flag(fl, private) \
-  ((fl) | FUTEX_PRIVATE_FLAG)
-# else
-#  define __lll_private_flag(fl, private) \
-  ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
-# endif
-#else
-# ifdef __ASSUME_PRIVATE_FUTEX
-#  define __lll_private_flag(fl, private) \
-  (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
-# else
-#  define __lll_private_flag(fl, private) \
-  (__builtin_constant_p (private)					      \
-   ? ((private) == 0							      \
-      ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))	      \
-      : (fl))								      \
-   : ({ unsigned int __fl = ((private) ^ FUTEX_PRIVATE_FLAG);		      \
-	asm ("andl %%fs:%P1, %0" : "+r" (__fl)				      \
-	     : "i" (offsetof (struct pthread, header.private_futex)));	      \
-	__fl | (fl); }))
-# endif
-#endif
-
 /* Initializer for lock.  */
 #define LLL_LOCK_INITIALIZER		(0)
 #define LLL_LOCK_INITIALIZER_LOCKED	(1)
@@ -106,39 +60,6 @@
 /* Delay in spinlock loop.  */
 #define BUSY_WAIT_NOP	  asm ("rep; nop")
 
-#define lll_futex_wait(futex, val, private) \
-  lll_futex_timed_wait(futex, val, NULL, private)
-
-
-#define lll_futex_timed_wait(futex, val, timeout, private) \
-  ({									      \
-    register const struct timespec *__to __asm ("r10") = timeout;	      \
-    int __status;							      \
-    register __typeof (val) _val __asm ("edx") = (val);			      \
-    __asm __volatile ("syscall"						      \
-		      : "=a" (__status)					      \
-		      : "0" (SYS_futex), "D" (futex),			      \
-			"S" (__lll_private_flag (FUTEX_WAIT, private)),	      \
-			"d" (_val), "r" (__to)				      \
-		      : "memory", "cc", "r11", "cx");			      \
-    __status;								      \
-  })
-
-
-#define lll_futex_wake(futex, nr, private) \
-  ({									      \
-    int __status;							      \
-    register __typeof (nr) _nr __asm ("edx") = (nr);			      \
-    LIBC_PROBE (lll_futex_wake, 3, futex, nr, private);                       \
-    __asm __volatile ("syscall"						      \
-		      : "=a" (__status)					      \
-		      : "0" (SYS_futex), "D" (futex),			      \
-			"S" (__lll_private_flag (FUTEX_WAKE, private)),	      \
-			"d" (_nr)					      \
-		      : "memory", "cc", "r10", "r11", "cx");		      \
-    __status;								      \
-  })
-
 
 /* NB: in the lll_trylock macro we simply return the value in %eax
    after the cmpxchg instruction.  In case the operation succeded this
@@ -378,58 +299,38 @@ extern int __lll_timedlock_elision (int *futex, short *adapt_count,
     }									      \
   while (0)
 
-/* Returns non-zero if error happened, zero if success.  */
-#define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val, private) \
-  ({ int __res;								      \
-     register int __nr_move __asm ("r10") = nr_move;			      \
-     register void *__mutex __asm ("r8") = mutex;			      \
-     register int __val __asm ("r9") = val;				      \
-     __asm __volatile ("syscall"					      \
-		       : "=a" (__res)					      \
-		       : "0" (__NR_futex), "D" ((void *) ftx),		      \
-			 "S" (__lll_private_flag (FUTEX_CMP_REQUEUE,	      \
-						  private)), "d" (nr_wake),   \
-			 "r" (__nr_move), "r" (__mutex), "r" (__val)	      \
-		       : "cx", "r11", "cc", "memory");			      \
-     __res < 0; })
-
 #define lll_islocked(futex) \
   (futex != LLL_LOCK_INITIALIZER)
 
 
 /* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
-   wakeup when the clone terminates.  The memory location contains the
-   thread ID while the clone is running and is reset to zero
-   afterwards.
-
-   The macro parameter must not have any side effect.  */
+   wake-up when the clone terminates.  The memory location contains the
+   thread ID while the clone is running and is reset to zero by the kernel
+   afterwards.  The kernel up to version 3.16.3 does not use the private futex
+   operations for futex wake-up when the clone terminates.  */
 #define lll_wait_tid(tid) \
-  do {									      \
-    int __ignore;							      \
-    register __typeof (tid) _tid asm ("edx") = (tid);			      \
-    if (_tid != 0)							      \
-      __asm __volatile ("xorq %%r10, %%r10\n\t"				      \
-			"1:\tmovq %2, %%rax\n\t"			      \
-			"syscall\n\t"					      \
-			"cmpl $0, (%%rdi)\n\t"				      \
-			"jne 1b"					      \
-			: "=&a" (__ignore)				      \
-			: "S" (FUTEX_WAIT), "i" (SYS_futex), "D" (&tid),      \
-			  "d" (_tid)					      \
-			: "memory", "cc", "r10", "r11", "cx");		      \
+  do {					\
+    __typeof (tid) __tid;		\
+    while ((__tid = (tid)) != 0)	\
+      lll_futex_wait (&(tid), __tid, LLL_SHARED);\
   } while (0)
 
-extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime)
+extern int __lll_timedwait_tid (int *, const struct timespec *)
      attribute_hidden;
+
+/* As lll_wait_tid, but with a timeout.  If the timeout occurs then return
+   ETIMEDOUT.  If ABSTIME is invalid, return EINVAL.
+   XXX Note that this differs from the generic version in that we do the
+   error checking here and not in __lll_timedwait_tid.  */
 #define lll_timedwait_tid(tid, abstime) \
   ({									      \
     int __result = 0;							      \
-    if (tid != 0)							      \
+    if ((tid) != 0)							      \
       {									      \
-	if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)	      \
+	if ((abstime)->tv_nsec < 0 || (abstime)->tv_nsec >= 1000000000)	      \
 	  __result = EINVAL;						      \
 	else								      \
-	  __result = __lll_timedwait_tid (&tid, abstime);		      \
+	  __result = __lll_timedwait_tid (&(tid), (abstime));		      \
       }									      \
     __result; })
 

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6b814909b41476ad594547b5f2289889a39cc0dd

commit 6b814909b41476ad594547b5f2289889a39cc0dd
Author: Torvald Riegel <triegel@redhat.com>
Date:   Wed Dec 17 23:28:38 2014 +0100

    sh: Remove custom lowlevellock, barrier, condvar, and rwlock implementations.

diff --git a/ChangeLog b/ChangeLog
index 4c6a304..977cdad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2014-12-19  Torvald Riegel  <triegel@redhat.com>
+
+	* sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove file.
+	* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
+	* sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: Likewise.
+	* sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
+	* sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
+
 2014-12-19  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/x86_64/x32/Makefile: New file.
diff --git a/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S b/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
deleted file mode 100644
index ad6188d..0000000
--- a/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include "lowlevellock.S"
diff --git a/sysdeps/unix/sysv/linux/sh/lowlevellock.S b/sysdeps/unix/sysv/linux/sh/lowlevellock.S
deleted file mode 100644
index 3fab373..0000000
--- a/sysdeps/unix/sysv/linux/sh/lowlevellock.S
+++ /dev/null
@@ -1,574 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <pthread-errnos.h>
-#include <kernel-features.h>
-#include <lowlevellock.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-#ifdef __ASSUME_PRIVATE_FUTEX
-# define LOAD_PRIVATE_FUTEX_WAIT(reg,tmp,tmp2) \
-	mov	#(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), reg; \
-	extu.b	reg, reg
-# define LOAD_PRIVATE_FUTEX_WAKE(reg,tmp,tmp2) \
-	mov	#(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), reg; \
-	extu.b	reg, reg
-# define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
-	mov	#(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), tmp; \
-	extu.b	tmp, tmp; \
-	xor	tmp, reg
-# define LOAD_FUTEX_WAIT_ABS(reg,tmp,tmp2) \
-	mov	#(FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG), tmp; \
-	extu.b	tmp, tmp; \
-	mov	#(FUTEX_CLOCK_REALTIME >> 8), tmp2; \
-	swap.b	tmp2, tmp2; \
-	or	tmp2, tmp; \
-	xor	tmp, reg
-# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
-	mov	#(FUTEX_WAKE | FUTEX_PRIVATE_FLAG), tmp; \
-	extu.b	tmp, tmp; \
-	xor	tmp, reg
-#else
-# if FUTEX_WAIT == 0
-#  define LOAD_PRIVATE_FUTEX_WAIT(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, reg	; \
-	add	reg, tmp	; \
-	bra	98f		; \
-	 mov.l	@tmp, reg	; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:
-# else
-#  define LOAD_PRIVATE_FUTEX_WAIT(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, reg	; \
-	add	reg, tmp	; \
-	mov.l	@tmp, reg	; \
-	bra	98f		; \
-	 mov	#FUTEX_WAIT, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	or	tmp, reg
-# endif
-# define LOAD_PRIVATE_FUTEX_WAKE(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, reg	; \
-	add	reg, tmp	; \
-	mov.l	@tmp, reg	; \
-	bra	98f		; \
-	 mov	#FUTEX_WAKE, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	or	tmp, reg
-# if FUTEX_WAIT == 0
-#  define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, tmp2	; \
-	add	tmp2, tmp	; \
-	mov.l	@tmp, tmp2	; \
-	bra	98f		; \
-	 mov	#FUTEX_PRIVATE_FLAG, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	extu.b	tmp, tmp	; \
-	xor	tmp, reg	; \
-	and	tmp2, reg
-# else
-#  define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, tmp2	; \
-	add	tmp2, tmp	; \
-	mov.l	@tmp, tmp2	; \
-	bra	98f		; \
-	 mov	#FUTEX_PRIVATE_FLAG, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	extu.b	tmp, tmp	; \
-	xor	tmp, reg	; \
-	and	tmp2, reg	; \
-	mov	#FUTEX_WAIT, tmp ; \
-	or	tmp, reg
-# endif
-# define LOAD_FUTEX_WAIT_ABS(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, tmp2	; \
-	add	tmp2, tmp	; \
-	mov.l	@tmp, tmp2	; \
-	bra	98f		; \
-	 mov	#FUTEX_PRIVATE_FLAG, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	extu.b	tmp, tmp	; \
-	xor	tmp, reg	; \
-	and	tmp2, reg	; \
-	mov	#FUTEX_WAIT_BITSET, tmp ; \
-	mov	#(FUTEX_CLOCK_REALTIME >> 8), tmp2; \
-	swap.b	tmp2, tmp2; \
-	or	tmp2, tmp; \
-	or	tmp, reg
-# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, tmp2	; \
-	add	tmp2, tmp	; \
-	mov.l	@tmp, tmp2	; \
-	bra	98f		; \
-	 mov	#FUTEX_PRIVATE_FLAG, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	extu.b	tmp, tmp	; \
-	xor	tmp, reg	; \
-	and	tmp2, reg	; \
-	mov	#FUTEX_WAKE, tmp ; \
-	or	tmp, reg
-#endif
-
-	.globl	__lll_lock_wait_private
-	.type	__lll_lock_wait_private,@function
-	.hidden	__lll_lock_wait_private
-	.align	5
-	cfi_startproc
-__lll_lock_wait_private:
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r8, 0)
-	mov	r4, r6
-	mov	r5, r8
-	mov	#0, r7		/* No timeout.  */
-	LOAD_PRIVATE_FUTEX_WAIT (r5, r0, r1)
-
-	mov	#2, r4
-	cmp/eq	r4, r6
-	bf	2f
-
-1:
-	mov	r8, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-2:
-	mov	#2, r6
-	XCHG (r6, @r8, r2)
-	tst	r2, r2
-	bf	1b
-
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	rts
-	 mov	r2, r0
-	cfi_endproc
-	.size	__lll_lock_wait_private,.-__lll_lock_wait_private
-
-#if !IS_IN (libc)
-	.globl	__lll_lock_wait
-	.type	__lll_lock_wait,@function
-	.hidden	__lll_lock_wait
-	.align	5
-	cfi_startproc
-__lll_lock_wait:
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r8, 0)
-	mov	r6, r9
-	mov	r4, r6
-	mov	r5, r8
-	mov	#0, r7		/* No timeout.  */
-	mov	r9, r5
-	LOAD_FUTEX_WAIT (r5, r0, r1)
-
-	mov	#2, r4
-	cmp/eq	r4, r6
-	bf	2f
-
-1:
-	mov	r8, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-2:
-	mov	#2, r6
-	XCHG (r6, @r8, r2)
-	tst	r2, r2
-	bf	1b
-
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	ret
-	 mov	r2, r0
-	cfi_endproc
-	.size	__lll_lock_wait,.-__lll_lock_wait
-
-	/*      r5  (r8): futex
-		r7 (r11): flags
-		r6  (r9): timeout
-		r4 (r10): futex value
-	*/
-	.globl	__lll_timedlock_wait
-	.type	__lll_timedlock_wait,@function
-	.hidden	__lll_timedlock_wait
-	.align	5
-	cfi_startproc
-__lll_timedlock_wait:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r12, 0)
-
-# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
-	mov.l	.Lhave, r1
-#  ifdef PIC
-	mova	.Lgot, r0
-	mov.l	.Lgot, r12
-	add	r0, r12
-	add	r12, r1
-#  endif
-	mov.l	@r1, r0
-	tst	r0, r0
-	bt	.Lreltmo
-# endif
-
-	/* if (timeout->tv_sec < 0) return ETIMEDOUT; */
-	mov.l	@r6, r1
-	cmp/pz	r1
-	bf/s	5f
-	 mov	#ETIMEDOUT, r0
-
-	mov	r4, r2
-	mov	r5, r4
-	mov	r7, r5
-	mov	r6, r7
-	LOAD_FUTEX_WAIT_ABS (r5, r0, r1)
-
-	mov	#2, r6
-	cmp/eq	r6, r2
-	bf/s	2f
-	 mov	r6, r2
-
-1:
-	mov	#2, r6
-	mov	#-1, r1
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x16
-	SYSCALL_INST_PAD
-	mov	r0, r6
-
-2:
-	XCHG	(r2, @r4, r3)	/* NB:   lock is implied */
-
-	tst	r3, r3
-	bt/s	3f
-	 mov	r6, r0
-
-	cmp/eq	#-ETIMEDOUT, r0
-	bt	4f
-	cmp/eq	#-EINVAL, r0
-	bf	1b
-4:
-	neg	r0, r3
-3:
-	mov	r3, r0
-5:
-	rts
-	 mov.l	@r15+, r12
-	/* Omit CFI for restore in delay slot.  */
-
-# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
-	.align	2
-# ifdef PIC
-.Lgot:
-	.long	_GLOBAL_OFFSET_TABLE_
-.Lhave:
-	.long	__have_futex_clock_realtime@GOTOFF
-# else
-.Lhave:
-	.long	__have_futex_clock_realtime
-# endif
-
-.Lreltmo:
-	/* Check for a valid timeout value.  */
-	mov.l	@(4,r6), r1
-	mov.l	.L1g, r0
-	cmp/hs	r0, r1
-	bt	3f
-
-	cfi_remember_state
-
-	mov.l	r11, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r11, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r8, 0)
-	mov	r7, r11
-	mov	r4, r10
-	mov	r6, r9
-	mov	r5, r8
-
-	/* Stack frame for the timespec and timeval structs.  */
-	add	#-8, r15
-	cfi_adjust_cfa_offset(8)
-
-	mov	#2, r2
-	XCHG (r2, @r8, r3)
-
-	tst	r3, r3
-	bt	6f
-
-1:
-	/* Get current time.  */
-	mov	r15, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	/* Compute relative timeout.  */
-	mov.l	@(4,r15), r0
-	mov.w	.L1k, r1
-	dmulu.l	r0, r1		/* Micro seconds to nano seconds.  */
-	mov.l	@r9, r2
-	mov.l	@(4,r9), r3
-	mov.l	@r15, r0
-	sts	macl, r1
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	4f
-	mov.l	.L1g, r1
-	add	r1, r3
-	add	#-1, r2
-4:
-	cmp/pz	r2
-	bf	2f		/* Time is already up.  */
-
-	mov.l	r2, @r15	/* Store relative timeout.  */
-	mov.l	r3, @(4,r15)
-
-	mov	r8, r4
-	mov	r11, r5
-	LOAD_FUTEX_WAIT (r5, r0, r1)
-	mov	r10, r6
-	mov	r15, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov	r0, r5
-
-	mov	#2, r2
-	XCHG (r2, @r8, r3)
-
-	tst	r3, r3
-	bt/s	6f
-	 mov	#-ETIMEDOUT, r1
-	cmp/eq	r5, r1
-	bf	1b
-
-2:	mov	#ETIMEDOUT, r3
-
-6:
-	add	#8, r15
-	cfi_adjust_cfa_offset (-8)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	mov.l	@r15+, r11
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r11)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	r3, r0
-
-	cfi_restore_state
-
-3:
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	#EINVAL, r0
-# endif
-	cfi_endproc
-
-.L1k:
-	.word	1000
-	.align	2
-.L1g:
-	.long	1000000000
-
-	.size	__lll_timedlock_wait,.-__lll_timedlock_wait
-#endif
-
-	.globl	__lll_unlock_wake_private
-	.type	__lll_unlock_wake_private,@function
-	.hidden	__lll_unlock_wake_private
-	.align	5
-	cfi_startproc
-__lll_unlock_wake_private:
-	LOAD_PRIVATE_FUTEX_WAKE (r5, r0, r1)
-	mov	#1, r6		/* Wake one thread.  */
-	mov	#0, r7
-	mov.l	r7, @r4		/* Stores 0.  */
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	rts
-	 nop
-	cfi_endproc
-	.size	__lll_unlock_wake_private,.-__lll_unlock_wake_private
-
-#if !IS_IN (libc)
-	.globl	__lll_unlock_wake
-	.type	__lll_unlock_wake,@function
-	.hidden	__lll_unlock_wake
-	.align	5
-	cfi_startproc
-__lll_unlock_wake:
-	LOAD_FUTEX_WAKE (r5, r0, r1)
-	mov	#1, r6		/* Wake one thread.  */
-	mov	#0, r7
-	mov.l	r7, @r4		/* Stores 0.  */
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	rts
-	 nop
-	cfi_endproc
-	.size	__lll_unlock_wake,.-__lll_unlock_wake
-
-	.globl	__lll_timedwait_tid
-	.type	__lll_timedwait_tid,@function
-	.hidden	__lll_timedwait_tid
-	.align	5
-	cfi_startproc
-__lll_timedwait_tid:
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r8, 0)
-	mov	r4, r8
-	mov	r5, r9
-
-	/* Stack frame for the timespec and timeval structs.  */
-	add	#-8, r15
-	cfi_adjust_cfa_offset(8)
-
-2:
-	/* Get current time.  */
-	mov	r15, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	/* Compute relative timeout.  */
-	mov.l	@(4,r15), r0
-	mov.w	.L1k2, r1
-	dmulu.l	r0, r1		/* Micro seconds to nano seconds.  */
-	mov.l	@r9, r2
-	mov.l	@(4,r9), r3
-	mov.l	@r15, r0
-	sts	macl, r1
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	5f
-	mov.l	.L1g2, r1
-	add	r1, r3
-	add	#-1, r2
-5:
-	cmp/pz	r2
-	bf	6f		/* Time is already up.  */
-
-	mov.l	r2, @r15	/* Store relative timeout.  */
-	mov.l	r3, @(4,r15)
-
-	mov.l	@r8, r2
-	tst	r2, r2
-	bt	4f
-
-	mov	r8, r4
-	/* XXX The kernel so far uses global futex for the wakeup at
-	   all times.  */
-	mov	#0, r5
-	extu.b	r5, r5
-	mov	r2, r6
-	mov	r15, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	mov.l	@r8, r2
-	tst	r2, r2
-	bf	1f
-4:
-	mov	#0, r0
-3:
-	cfi_remember_state
-	add	#8, r15
-	cfi_adjust_cfa_offset (-8)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	rts
-	 mov.l	@r15+, r9
-	/* Omit CFI for restore in delay slot.  */
-	cfi_restore_state
-1:
-	/* Check whether the time expired.  */
-	mov	#-ETIMEDOUT, r1
-	cmp/eq	r0, r1
-	bf	2b
-6:
-	bra	3b
-	 mov	#ETIMEDOUT, r0
-	cfi_endproc
-
-.L1k2:
-	.word	1000
-	.align	2
-.L1g2:
-	.long	1000000000
-	.size	__lll_timedwait_tid,.-__lll_timedwait_tid
-#endif
diff --git a/sysdeps/unix/sysv/linux/sh/lowlevellock.h b/sysdeps/unix/sysv/linux/sh/lowlevellock.h
deleted file mode 100644
index 8045846..0000000
--- a/sysdeps/unix/sysv/linux/sh/lowlevellock.h
+++ /dev/null
@@ -1,382 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _LOWLEVELLOCK_H
-#define _LOWLEVELLOCK_H	1
-
-#ifndef __ASSEMBLER__
-#include <time.h>
-#include <sys/param.h>
-#include <bits/pthreadtypes.h>
-#include <kernel-features.h>
-#endif
-
-#define SYS_futex		240
-#define FUTEX_WAIT		0
-#define FUTEX_WAKE		1
-#define FUTEX_CMP_REQUEUE	4
-#define FUTEX_WAKE_OP		5
-#define FUTEX_LOCK_PI		6
-#define FUTEX_UNLOCK_PI		7
-#define FUTEX_TRYLOCK_PI	8
-#define FUTEX_WAIT_BITSET	9
-#define FUTEX_WAKE_BITSET	10
-#define FUTEX_PRIVATE_FLAG	128
-#define FUTEX_CLOCK_REALTIME	256
-
-#define FUTEX_BITSET_MATCH_ANY	0xffffffff
-
-#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE	((4 << 24) | 1)
-
-/* Values for 'private' parameter of locking macros.  Yes, the
-   definition seems to be backwards.  But it is not.  The bit will be
-   reversed before passing to the system call.  */
-#define LLL_PRIVATE    0
-#define LLL_SHARED     FUTEX_PRIVATE_FLAG
-
-
-#if IS_IN (libc) || IS_IN (rtld)
-/* In libc.so or ld.so all futexes are private.  */
-# ifdef __ASSUME_PRIVATE_FUTEX
-#  define __lll_private_flag(fl, private) \
-  ((fl) | FUTEX_PRIVATE_FLAG)
-# else
-#  define __lll_private_flag(fl, private) \
-  ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
-# endif
-#else
-# ifdef __ASSUME_PRIVATE_FUTEX
-#  define __lll_private_flag(fl, private) \
-  (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
-# else
-#  define __lll_private_flag(fl, private) \
-  (__builtin_constant_p (private)					      \
-   ? ((private) == 0							      \
-      ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))	      \
-      : (fl))								      \
-   : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG)				      \
-	      & THREAD_GETMEM (THREAD_SELF, header.private_futex))))
-# endif
-#endif
-
-#ifndef __ASSEMBLER__
-
-/* Initializer for compatibility lock.  */
-#define LLL_LOCK_INITIALIZER		(0)
-#define LLL_LOCK_INITIALIZER_LOCKED	(1)
-#define LLL_LOCK_INITIALIZER_WAITERS	(2)
-
-extern int __lll_lock_wait_private (int val, int *__futex)
-  attribute_hidden;
-extern int __lll_lock_wait (int val, int *__futex, int private)
-  attribute_hidden;
-extern int __lll_timedlock_wait (int val, int *__futex,
-				 const struct timespec *abstime, int private)
-  attribute_hidden;
-extern int __lll_robust_lock_wait (int val, int *__futex, int private)
-  attribute_hidden;
-extern int __lll_robust_timedlock_wait (int val, int *__futex,
-					const struct timespec *abstime,
-					int private)
-  attribute_hidden;
-extern int __lll_unlock_wake_private (int *__futex) attribute_hidden;
-extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden;
-
-#define lll_trylock(futex) \
-  ({ unsigned char __result; \
-     __asm __volatile ("\
-	.align 2\n\
-	mova 1f,r0\n\
-	nop\n\
-	mov r15,r1\n\
-	mov #-8,r15\n\
-     0: mov.l @%1,r2\n\
-	cmp/eq r2,%3\n\
-	bf 1f\n\
-	mov.l %2,@%1\n\
-     1: mov r1,r15\n\
-	mov #-1,%0\n\
-	negc %0,%0"\
-	: "=r" (__result) \
-	: "r" (&(futex)), \
-	  "r" (LLL_LOCK_INITIALIZER_LOCKED), \
-	  "r" (LLL_LOCK_INITIALIZER) \
-	: "r0", "r1", "r2", "t", "memory"); \
-     __result; })
-
-#define lll_cond_trylock(futex) \
-  ({ unsigned char __result; \
-     __asm __volatile ("\
-	.align 2\n\
-	mova 1f,r0\n\
-	nop\n\
-	mov r15,r1\n\
-	mov #-8,r15\n\
-     0: mov.l @%1,r2\n\
-	cmp/eq r2,%3\n\
-	bf 1f\n\
-	mov.l %2,@%1\n\
-     1: mov r1,r15\n\
-	mov #-1,%0\n\
-	negc %0,%0"\
-	: "=r" (__result) \
-	: "r" (&(futex)), \
-	  "r" (LLL_LOCK_INITIALIZER_WAITERS), \
-	  "r" (LLL_LOCK_INITIALIZER) \
-	: "r0", "r1", "r2", "t", "memory"); \
-     __result; })
-
-#define lll_lock(futex, private) \
-  (void) ({ int __result, *__futex = &(futex); \
-	    __asm __volatile ("\
-		.align 2\n\
-		mova 1f,r0\n\
-		nop\n\
-		mov r15,r1\n\
-		mov #-8,r15\n\
-	     0: mov.l @%2,%0\n\
-		tst %0,%0\n\
-		bf 1f\n\
-		mov.l %1,@%2\n\
-	     1: mov r1,r15"\
-		: "=&r" (__result) : "r" (1), "r" (__futex) \
-		: "r0", "r1", "t", "memory"); \
-	    if (__result) \
-	      { \
-		if (__builtin_constant_p (private) \
-		    && (private) == LLL_PRIVATE) \
-		  __lll_lock_wait_private (__result, __futex); \
-	        else \
-		  __lll_lock_wait (__result, __futex, (private));	\
-	      } \
-    })
-
-#define lll_robust_lock(futex, id, private) \
-  ({ int __result, *__futex = &(futex); \
-     __asm __volatile ("\
-	.align 2\n\
-	mova 1f,r0\n\
-	nop\n\
-	mov r15,r1\n\
-	mov #-8,r15\n\
-      0: mov.l @%2,%0\n\
-	tst %0,%0\n\
-	bf 1f\n\
-	mov.l %1,@%2\n\
-      1: mov r1,r15"\
-	: "=&r" (__result) : "r" (id), "r" (__futex) \
-	: "r0", "r1", "t", "memory"); \
-     if (__result) \
-       __result = __lll_robust_lock_wait (__result, __futex, private); \
-     __result; })
-
-/* Special version of lll_mutex_lock which causes the unlock function to
-   always wakeup waiters.  */
-#define lll_cond_lock(futex, private) \
-  (void) ({ int __result, *__futex = &(futex); \
-	    __asm __volatile ("\
-		.align 2\n\
-		mova 1f,r0\n\
-		nop\n\
-		mov r15,r1\n\
-		mov #-8,r15\n\
-	     0: mov.l @%2,%0\n\
-		tst %0,%0\n\
-		bf 1f\n\
-		mov.l %1,@%2\n\
-	     1: mov r1,r15"\
-		: "=&r" (__result) : "r" (2), "r" (__futex) \
-		: "r0", "r1", "t", "memory"); \
-	    if (__result) \
-	      __lll_lock_wait (__result, __futex, private); })
-
-#define lll_robust_cond_lock(futex, id, private) \
-  ({ int __result, *__futex = &(futex); \
-     __asm __volatile ("\
-	.align 2\n\
-	mova 1f,r0\n\
-	nop\n\
-	mov r15,r1\n\
-	mov #-8,r15\n\
-     0: mov.l @%2,%0\n\
-	tst %0,%0\n\
-	bf 1f\n\
-	mov.l %1,@%2\n\
-     1: mov r1,r15"\
-	: "=&r" (__result) : "r" (id | FUTEX_WAITERS), "r" (__futex) \
-	: "r0", "r1", "t", "memory"); \
-      if (__result) \
-	__result = __lll_robust_lock_wait (__result, __futex, private); \
-      __result; })
-
-#define lll_timedlock(futex, timeout, private) \
-  ({ int __result, *__futex = &(futex); \
-     __asm __volatile ("\
-	.align 2\n\
-	mova 1f,r0\n\
-	nop\n\
-	mov r15,r1\n\
-	mov #-8,r15\n\
-     0: mov.l @%2,%0\n\
-	tst %0,%0\n\
-	bf 1f\n\
-	mov.l %1,@%2\n\
-     1: mov r1,r15"\
-	: "=&r" (__result) : "r" (1), "r" (__futex) \
-	: "r0", "r1", "t", "memory"); \
-    if (__result) \
-      __result = __lll_timedlock_wait (__result, __futex, timeout, private); \
-    __result; })
-
-#define lll_robust_timedlock(futex, timeout, id, private) \
-  ({ int __result, *__futex = &(futex); \
-     __asm __volatile ("\
-	.align 2\n\
-	mova 1f,r0\n\
-	nop\n\
-	mov r15,r1\n\
-	mov #-8,r15\n\
-     0: mov.l @%2,%0\n\
-	tst %0,%0\n\
-	bf 1f\n\
-	mov.l %1,@%2\n\
-     1: mov r1,r15"\
-	: "=&r" (__result) : "r" (id), "r" (__futex) \
-	: "r0", "r1", "t", "memory"); \
-    if (__result) \
-      __result = __lll_robust_timedlock_wait (__result, __futex, \
-					      timeout, private); \
-    __result; })
-
-#define lll_unlock(futex, private) \
-  (void) ({ int __result, *__futex = &(futex); \
-	    __asm __volatile ("\
-		.align 2\n\
-		mova 1f,r0\n\
-		mov r15,r1\n\
-		mov #-6,r15\n\
-	     0: mov.l @%1,%0\n\
-		add #-1,%0\n\
-		mov.l %0,@%1\n\
-	     1: mov r1,r15"\
-		: "=&r" (__result) : "r" (__futex) \
-		: "r0", "r1", "memory"); \
-	    if (__result) \
-	      { \
-		if (__builtin_constant_p (private) \
-		    && (private) == LLL_PRIVATE) \
-		  __lll_unlock_wake_private (__futex); \
-	        else \
-		  __lll_unlock_wake (__futex, (private)); \
-	      } \
-    })
-
-#define lll_robust_unlock(futex, private) \
-  (void) ({ int __result, *__futex = &(futex); \
-	    __asm __volatile ("\
-		.align 2\n\
-		mova 1f,r0\n\
-		mov r15,r1\n\
-		mov #-6,r15\n\
-	     0: mov.l @%1,%0\n\
-		and %2,%0\n\
-		mov.l %0,@%1\n\
-	     1: mov r1,r15"\
-		: "=&r" (__result) : "r" (__futex), "r" (FUTEX_WAITERS) \
-		: "r0", "r1", "memory");	\
-	    if (__result) \
-	      __lll_unlock_wake (__futex, private); })
-
-# ifdef NEED_SYSCALL_INST_PAD
-#  define SYSCALL_WITH_INST_PAD "\
-	trapa #0x14; or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0"
-# else
-#  define SYSCALL_WITH_INST_PAD "\
-	trapa #0x14"
-# endif
-
-#define lll_futex_wait(futex, val, private) \
-  lll_futex_timed_wait (futex, val, NULL, private)
-
-
-#define lll_futex_timed_wait(futex, val, timeout, private) \
-  ({									      \
-    int __status;							      \
-    register unsigned long __r3 asm ("r3") = SYS_futex;			      \
-    register unsigned long __r4 asm ("r4") = (unsigned long) (futex);	      \
-    register unsigned long __r5 asm ("r5")				      \
-      = __lll_private_flag (FUTEX_WAIT, private);			      \
-    register unsigned long __r6 asm ("r6") = (unsigned long) (val);	      \
-    register unsigned long __r7 asm ("r7") = (unsigned long) (timeout);	      \
-    __asm __volatile (SYSCALL_WITH_INST_PAD				      \
-		      : "=z" (__status)					      \
-		      : "r" (__r3), "r" (__r4), "r" (__r5),		      \
-			"r" (__r6), "r" (__r7)				      \
-		      : "memory", "t");					      \
-    __status;								      \
-  })
-
-
-#define lll_futex_wake(futex, nr, private) \
-  do {									      \
-    int __ignore;							      \
-    register unsigned long __r3 asm ("r3") = SYS_futex;			      \
-    register unsigned long __r4 asm ("r4") = (unsigned long) (futex);	      \
-    register unsigned long __r5 asm ("r5")				      \
-      = __lll_private_flag (FUTEX_WAKE, private);			      \
-    register unsigned long __r6 asm ("r6") = (unsigned long) (nr);	      \
-    register unsigned long __r7 asm ("r7") = 0;				      \
-    __asm __volatile (SYSCALL_WITH_INST_PAD				      \
-		      : "=z" (__ignore)					      \
-		      : "r" (__r3), "r" (__r4), "r" (__r5),		      \
-			"r" (__r6), "r" (__r7)				      \
-		      : "memory", "t");					      \
-  } while (0)
-
-
-#define lll_islocked(futex) \
-  (futex != LLL_LOCK_INITIALIZER)
-
-/* The kernel notifies a process which uses CLONE_CHILD_CLEARTID via futex
-   wakeup when the clone terminates.  The memory location contains the
-   thread ID while the clone is running and is reset to zero
-   afterwards.  */
-
-#define lll_wait_tid(tid) \
-  do {									      \
-    __typeof (tid) *__tid = &(tid);					      \
-    while (*__tid != 0)							      \
-      lll_futex_wait (__tid, *__tid, LLL_SHARED);			      \
-  } while (0)
-
-extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime)
-     attribute_hidden;
-#define lll_timedwait_tid(tid, abstime) \
-  ({									      \
-    int __result = 0;							      \
-    if (tid != 0)							      \
-      {									      \
-	if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)	      \
-	  __result = EINVAL;						      \
-	else								      \
-	  __result = __lll_timedwait_tid (&tid, abstime);		      \
-      }									      \
-    __result; })
-
-#endif  /* !__ASSEMBLER__ */
-
-#endif  /* lowlevellock.h */
diff --git a/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S b/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
deleted file mode 100644
index 65b8d0c..0000000
--- a/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
+++ /dev/null
@@ -1,278 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <pthread-errnos.h>
-#include <lowlevellock.h>
-#include <lowlevelrobustlock.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-#define FUTEX_WAITERS		0x80000000
-#define FUTEX_OWNER_DIED	0x40000000
-
-#ifdef __ASSUME_PRIVATE_FUTEX
-# define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
-	mov	#(FUTEX_WAIT | FUTEX_PRIVATE_FLAG), tmp; \
-	extu.b	tmp, tmp; \
-	xor	tmp, reg
-#else
-# if FUTEX_WAIT == 0
-#  define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, tmp2	; \
-	add	tmp2, tmp 	; \
-	mov.l	@tmp, tmp2	; \
-	bra	98f		; \
-	 mov	#FUTEX_PRIVATE_FLAG, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	extu.b	tmp, tmp	; \
-	xor	tmp, reg	; \
-	and	tmp2, reg
-# else
-#  define LOAD_FUTEX_WAIT(reg,tmp,tmp2) \
-	stc	gbr, tmp	; \
-	mov.w	99f, tmp2	; \
-	add	tmp2, tmp 	; \
-	mov.l	@tmp, tmp2	; \
-	bra	98f		; \
-	 mov	#FUTEX_PRIVATE_FLAG, tmp ; \
-99:	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
-98:	extu.b	tmp, tmp	; \
-	xor	tmp, reg	; \
-	and	tmp2, reg	; \
-	mov	#FUTEX_WAIT, tmp ; \
-	or	tmp, reg
-# endif
-#endif
-
-	.globl	__lll_robust_lock_wait
-	.type	__lll_robust_lock_wait,@function
-	.hidden	__lll_robust_lock_wait
-	.align	5
-	cfi_startproc
-__lll_robust_lock_wait:
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r8, 0)
-	mov	r5, r8
-	mov	#0, r7		/* No timeout.  */
-	mov	r6, r5
-	LOAD_FUTEX_WAIT (r5, r0, r1)
-
-4:
-	mov	r4, r6
-	mov.l	.L_FUTEX_WAITERS, r0
-	or	r0, r6
-	shlr	r0		/* r0 = FUTEX_OWNER_DIED */
-	tst	r0, r4
-	bf/s	3f
-	 cmp/eq	r4, r6
-	bt	1f
-
-	CMPXCHG (r4, @r8, r6, r2)
-	bf	2f
-
-1:
-	mov	r8, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	mov.l	@r8, r2
-
-2:
-	tst	r2, r2
-	bf/s	4b
-	 mov	r2, r4
-
-	stc	gbr, r1
-	mov.w	.Ltidoff, r2
-	add	r2, r1
-	mov.l	@r1, r6
-	mov	#0, r3
-	CMPXCHG (r3, @r8, r6, r4)
-	bf	4b
-	mov	#0, r4
-
-3:
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	ret
-	 mov	r4, r0
-	cfi_endproc
-	.align	2
-.L_FUTEX_WAITERS:
-	.long	FUTEX_WAITERS
-.Ltidoff:
-	.word	TID - TLS_PRE_TCB_SIZE
-	.size	__lll_robust_lock_wait,.-__lll_robust_lock_wait
-
-
-	.globl	__lll_robust_timedlock_wait
-	.type	__lll_robust_timedlock_wait,@function
-	.hidden	__lll_robust_timedlock_wait
-	.align	5
-	cfi_startproc
-__lll_robust_timedlock_wait:
-	/* Check for a valid timeout value.  */
-	mov.l	@(4,r6), r1
-	mov.l	.L1g, r0
-	cmp/hs	r0, r1
-	bt	3f
-
-	cfi_remember_state
-
-	mov.l	r11, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r11, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset(4)
-	cfi_rel_offset (r8, 0)
-	mov	r7, r11
-	mov	r4, r10
-	mov	r6, r9
-	mov	r5, r8
-
-	/* Stack frame for the timespec and timeval structs.  */
-	add	#-8, r15
-	cfi_adjust_cfa_offset(8)
-
-1:
-	/* Get current time.  */
-	mov	r15, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	/* Compute relative timeout.  */
-	mov.l	@(4,r15), r0
-	mov.w	.L1k, r1
-	dmulu.l	r0, r1		/* Micro seconds to nano seconds.  */
-	mov.l	@r9, r2
-	mov.l	@(4,r9), r3
-	mov.l	@r15, r0
-	sts	macl, r1
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	4f
-	mov.l	.L1g, r1
-	add	r1, r3
-	add	#-1, r2
-4:
-	cmp/pz	r2
-	bf	8f		/* Time is already up.  */
-
-	mov.l	r2, @r15	/* Store relative timeout.  */
-	mov.l	r3, @(4,r15)
-
-	mov	r10, r6
-	mov.l	.L_FUTEX_WAITERS2, r0
-	or	r0, r6
-	shlr	r0		/* r0 = FUTEX_OWNER_DIED */
-	tst	r0, r4
-	bf/s	6f
-	 cmp/eq	r4, r6
-	bt	2f
-
-	CMPXCHG (r4, @r8, r6, r2)
-	bf/s	5f
-	 mov	#0, r5
-
-2:
-	mov	r8, r4
-	mov	r11, r5
-	LOAD_FUTEX_WAIT (r5, r0, r1)
-	mov	r10, r6
-	mov	r15, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov	r0, r5
-
-	mov.l	@r8, r2
-
-5:
-	tst	r2, r2
-	bf/s	7f
-	 mov	r2, r10
-
-	stc	gbr, r1
-	mov.w	.Ltidoff2, r2
-	add	r2, r1
-	mov.l	@r1, r4
-	mov	#0, r3
-	CMPXCHG (r3, @r8, r4, r10)
-	bf	7f
-	mov	#0, r0
-
-6:
-	cfi_remember_state
-	add	#8, r15
-	cfi_adjust_cfa_offset (-8)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	rts
-	 mov.l	@r15+, r11
-	/* Omit CFI for restore in delay slot.  */
-	cfi_restore_state
-
-7:
-	/* Check whether the time expired.  */
-	mov	#-ETIMEDOUT, r1
-	cmp/eq	r5, r1
-	bf	1b
-
-8:
-	bra	6b
-	 mov	#ETIMEDOUT, r0
-
-	cfi_restore_state
-3:
-	rts
-	 mov	#EINVAL, r0
-	cfi_endproc
-	.align	2
-.L_FUTEX_WAITERS2:
-	.long	FUTEX_WAITERS
-.L1g:
-	.long	1000000000
-.Ltidoff2:
-	.word	TID - TLS_PRE_TCB_SIZE
-.L1k:
-	.word	1000
-	.size	__lll_robust_timedlock_wait,.-__lll_robust_timedlock_wait
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S b/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
deleted file mode 100644
index 946b1d7..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
+++ /dev/null
@@ -1,239 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <lowlevelbarrier.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-	.globl	pthread_barrier_wait
-	.type	pthread_barrier_wait,@function
-	.align	5
-	cfi_startproc
-pthread_barrier_wait:
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-
-	/* Get the mutex.  */
-	mov	#0, r3
-	mov	#1, r4
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-	bf	1f
-
-	/* One less waiter.  If this was the last one needed wake
-	   everybody.  */
-2:
-	mov.l	@(LEFT,r8), r0
-	add	#-1, r0
-	mov.l	r0, @(LEFT,r8)
-	tst	r0, r0
-	bt	3f
-
-	/* There are more threads to come.  */
-	mov.l	@(CURR_EVENT,r8), r6
-
-	/* Release the mutex.  */
-	DEC (@(MUTEX,r8), r2)
-	tst	r2, r2
-	bf	6f
-7:
-	/* Wait for the remaining threads.  The call will return immediately
-	   if the CURR_EVENT memory has meanwhile been changed.  */
-	mov	r8, r4
-#if CURR_EVENT != 0
-	add	#CURR_EVENT, r4
-#endif
-#if FUTEX_WAIT == 0
-	mov.l	@(PRIVATE,r8), r5
-#else
-	mov	#FUTEX_WAIT, r5
-	mov.l	@(PRIVATE,r8), r0
-	or	r0, r5
-#endif
-	mov	#0, r7
-8:
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	/* Don't return on spurious wakeups.  The syscall does not change
-	   any register except r0 so there is no need to reload any of
-	   them.  */
-	mov.l	@(CURR_EVENT,r8), r0
-	cmp/eq	r0, r6
-	bt	8b
-
-	/* Increment LEFT.  If this brings the count back to the
-	   initial count unlock the object.  */
-	mov	#1, r3
-	mov.l	@(INIT_COUNT,r8), r4
-	XADD	(r3, @(LEFT,r8), r2, r5)
-	add	#-1, r4
-	cmp/eq	r2, r4
-	bf	10f
-
-	/* Release the mutex.  We cannot release the lock before
-	   waking the waiting threads since otherwise a new thread might
-	   arrive and gets waken up, too.  */
-	DEC (@(MUTEX,r8), r2)
-	tst	r2, r2
-	bf	9f
-
-10:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	rts
-	 mov	#0, r0		/* != PTHREAD_BARRIER_SERIAL_THREAD */
-	cfi_restore_state
-
-3:
-	/* The necessary number of threads arrived.  */
-	mov.l	@(CURR_EVENT,r8), r1
-	add	#1, r1
-	mov.l	r1, @(CURR_EVENT,r8)
-
-	/* Wake up all waiters.  The count is a signed number in the kernel
-	   so 0x7fffffff is the highest value.  */
-	mov.l	.Lall, r6
-	mov	r8, r4
-#if CURR_EVENT != 0
-	add	#CURR_EVENT, r4
-#endif
-	mov	#0, r7
-	mov	#FUTEX_WAKE, r5
-	mov.l	@(PRIVATE,r8), r0
-	or	r0, r5
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	/* Increment LEFT.  If this brings the count back to the
-	   initial count unlock the object.  */
-	mov	#1, r3
-	mov.l	@(INIT_COUNT,r8), r4
-	XADD	(r3, @(LEFT,r8), r2, r5)
-	add	#-1, r4
-	cmp/eq	r2, r4
-	bf	5f
-
-	/* Release the mutex.  */
-	DEC (@(MUTEX,r8), r2)
-	tst	r2, r2
-	bf	4f
-5:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	rts
-	 mov	#-1, r0		/* == PTHREAD_BARRIER_SERIAL_THREAD */
-	cfi_restore_state
-
-1:
-	mov.l	@(PRIVATE,r8), r6
-	mov	#LLL_SHARED, r0
-	extu.b	r0, r0
-	xor	r0, r6
-	mov	r2, r4
-	mov	r8, r5
-	mov.l	.Lwait0, r1
-	bsrf	r1
-	 add	#MUTEX, r5
-.Lwait0b:
-	bra	2b
-	 nop
-
-4:
-	mov.l	@(PRIVATE,r8), r5
-	mov	#LLL_SHARED, r0
-	extu.b	r0, r0
-	xor	r0, r5
-	mov	r8, r4
-	mov.l	.Lwake0, r1
-	bsrf	r1
-	 add	#MUTEX, r4
-.Lwake0b:
-	bra	5b
-	 nop
-
-6:
-	mov	r6, r9
-	mov.l	@(PRIVATE,r8), r5
-	mov	#LLL_SHARED, r0
-	extu.b	r0, r0
-	xor	r0, r5
-	mov	r8, r4
-	mov.l	.Lwake1, r1
-	bsrf	r1
-	 add	#MUTEX, r4
-.Lwake1b:
-	bra	7b
-	 mov	r9, r6
-
-9:
-	mov	r6, r9
-	mov.l	@(PRIVATE,r8), r5
-	mov	#LLL_SHARED, r0
-	extu.b	r0, r0
-	xor	r0, r5
-	mov	r8, r4
-	mov.l	.Lwake2, r1
-	bsrf	r1
-	 add	#MUTEX, r4
-.Lwake2b:
-	bra	10b
-	 mov	r9, r6
-	cfi_endproc
-
-	.align	2
-.Lall:
-	.long	0x7fffffff
-.Lwait0:
-	.long	__lll_lock_wait-.Lwait0b
-.Lwake0:
-	.long	__lll_unlock_wake-.Lwake0b
-.Lwake1:
-	.long	__lll_unlock_wake-.Lwake1b
-.Lwake2:
-	.long	__lll_unlock_wake-.Lwake2b
-	.size	pthread_barrier_wait,.-pthread_barrier_wait
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S b/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
deleted file mode 100644
index 89b32cc..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
+++ /dev/null
@@ -1,292 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <lowlevellock.h>
-#include <lowlevelcond.h>
-#include <kernel-features.h>
-#include <pthread-pi-defines.h>
-#include <pthread-errnos.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-	/* int pthread_cond_broadcast (pthread_cond_t *cond) */
-	.globl	__pthread_cond_broadcast
-	.type	__pthread_cond_broadcast, @function
-	.align	5
-	cfi_startproc
-__pthread_cond_broadcast:
-	mov.l   r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l   r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-
-	/* Get internal lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(total_seq+4,r8),r0
-	mov.l	@(total_seq,r8),r1
-	mov.l	@(wakeup_seq+4,r8), r2
-	cmp/hi	r2, r0
-	bt	3f
-	cmp/hi	r0, r2
-	bt	4f
-	mov.l	@(wakeup_seq,r8), r2
-	cmp/hi	r2, r1
-	bf	4f
-
-3:
-	/* Cause all currently waiting threads to recognize they are
-	   woken up.  */
-	mov.l	r1, @(wakeup_seq,r8)
-	mov.l	r0, @(wakeup_seq+4,r8)
-	mov.l	r1, @(woken_seq,r8)
-	mov.l	r0, @(woken_seq+4,r8)
-	mov.l	@(broadcast_seq,r8), r2
-	add	#1, r2
-	mov.l	r2, @(broadcast_seq,r8)
-	add	r1, r1
-	mov	r1, r10
-	mov.l	r10, @(cond_futex,r8)
-
-	/* Get the address of the mutex used.  */
-	mov.l	@(dep_mutex,r8), r9
-
-	/* Unlock.  */
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	7f
-
-8:
-	/* Don't use requeue for pshared condvars.  */
-	mov	#-1, r0
-	cmp/eq	r0, r9
-	mov	r8, r4
-	bt/s	9f
-	 add	#cond_futex, r4
-
-	/* XXX: The kernel only supports FUTEX_CMP_REQUEUE to the same
-	   type of futex (private resp. shared).  */
-	mov.l	@(MUTEX_KIND,r9), r0
-	tst	#(PI_BIT|PS_BIT), r0
-	bf	9f
-
-	/* Wake up all threads.  */
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_CMP_REQUEUE|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_CMP_REQUEUE, r0
-	or	r0, r5
-#endif
-	mov	#1, r6
-	mov	#-1, r7
-	shlr	r7		/* r7 = 0x7fffffff */
-	mov	r9, r0
-# if MUTEX_FUTEX != 0
-	add	#MUTEX_FUTEX, r0
-# endif
-	mov	r10, r1
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x16
-	SYSCALL_INST_PAD
-
-	/* For any kind of error, which mainly is EAGAIN, we try again
-	   with WAKE.  The general test also covers running on old
-	   kernels.  */
-	mov	r0, r1
-	mov	#-12, r2
-	shad	r2, r1
-	not	r1, r1
-	tst	r1, r1
-	mov	r8, r4
-	bt/s	9f
-	 add	#cond_futex, r4
-
-10:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	rts
-	 mov	#0, r0
-	cfi_restore_state
-
-4:
-	/* Unlock.  */
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	5f
-6:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	rts
-	 mov	#0, r0
-	cfi_restore_state
-
-1:
-	/* Initial locking failed.  */
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait5, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait5b:
-	bra	2b
-	 nop
-
-5:
-	/* Unlock in loop requires wakeup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake5, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake5b:
-	bra	6b
-	 nop
-
-7:
-	/* Unlock in loop requires wakeup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov	#-1, r0
-	cmp/eq	r0, r9
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake6, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake6b:
-	bra	8b
-	 nop
-
-9:
-	mov	#-1, r0
-	cmp/eq	r0, r9
-	bt/s	99f
-	 mov	#FUTEX_WAKE, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAKE, r0
-	or	r0, r5
-#endif
-99:
-	mov	#-1, r6
-	shlr	r6		/* r6 = 0x7fffffff */
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	bra	10b
-	 nop
-	cfi_endproc
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-
-	.align	2
-.Lwait5:
-	.long	__lll_lock_wait-.Lwait5b
-.Lwake5:
-	.long	__lll_unlock_wake-.Lwake5b
-.Lwake6:
-	.long	__lll_unlock_wake-.Lwake6b
-	.size	__pthread_cond_broadcast, .-__pthread_cond_broadcast
-versioned_symbol (libpthread, __pthread_cond_broadcast, pthread_cond_broadcast,
-		  GLIBC_2_3_2)
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S b/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
deleted file mode 100644
index 865a9ee..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
+++ /dev/null
@@ -1,201 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <lowlevellock.h>
-#include <lowlevelcond.h>
-#include <kernel-features.h>
-#include <pthread-errnos.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-	/* int pthread_cond_signal (pthread_cond_t *cond) */
-	.globl	__pthread_cond_signal
-	.type	__pthread_cond_signal, @function
-	.align	5
-	cfi_startproc
-__pthread_cond_signal:
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-
-	/* Get internal lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(total_seq+4,r8),r0
-	mov.l	@(total_seq,r8),r1
-	mov.l	@(wakeup_seq+4,r8), r2
-	cmp/hi	r2, r0
-	bt	3f
-	cmp/hi	r0, r2
-	bt	4f
-	mov.l	@(wakeup_seq,r8), r2
-	cmp/hi	r2, r1
-	bf	4f
-
-3:
-	/* Bump the wakeup number.  */
-	mov	#1, r2
-	mov	#0, r3
-	clrt
-	mov.l	@(wakeup_seq,r8),r0
-	mov.l	@(wakeup_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(wakeup_seq,r8)
-	mov.l	r1,@(wakeup_seq+4,r8)
-	mov.l	@(cond_futex,r8),r0
-	add	r2, r0
-	mov.l	r0,@(cond_futex,r8)
-
-	/* Wake up one thread.  */
-	mov	r8, r4
-	add	#cond_futex, r4
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAKE_OP, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAKE_OP, r0
-	or	r0, r5
-#endif
-99:
-	mov	#1, r6
-	mov	#0, r7
-	mov	r8, r0
-	add	#cond_lock, r0
-	mov.l	.Lfutexop, r1
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	/* For any kind of error, we try again with WAKE.
-	   The general test also covers running on old kernels.  */
-	mov	r0, r1
-	mov	#-12, r2
-	shad	r2, r1
-	not	r1, r1
-	tst	r1, r1
-	bt	7f
-
-6:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	rts
-	 mov	#0, r0
-	cfi_restore_state
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-	.align	2
-.Lfutexop:
-	.long	FUTEX_OP_CLEAR_WAKE_IF_GT_ONE
-
-7:
-	/* r5 should be either FUTEX_WAKE_OP or
-	   FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall.  */
-	mov	#(FUTEX_WAKE ^ FUTEX_WAKE_OP), r0
-	xor	r0, r5
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-4:
-	/* Unlock.  */
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bt	6b
-
-5:
-	/* Unlock in loop requires wakeup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake4, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake4b:
-	bra	6b
-	 nop
-
-1:
-	/* Initial locking failed.  */
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait4, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait4b:
-	bra	2b
-	 nop
-	cfi_endproc
-
-	.align	2
-.Lwait4:
-	.long	__lll_lock_wait-.Lwait4b
-.Lwake4:
-	.long	__lll_unlock_wake-.Lwake4b
-	.size	__pthread_cond_signal, .-__pthread_cond_signal
-versioned_symbol (libpthread, __pthread_cond_signal, pthread_cond_signal,
-		  GLIBC_2_3_2)
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S b/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
deleted file mode 100644
index 94b99e7..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
+++ /dev/null
@@ -1,769 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <lowlevellock.h>
-#include <lowlevelcond.h>
-#include <pthread-errnos.h>
-#include <kernel-features.h>
-#include <tcb-offsets.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-/* int pthread_cond_timedwait (pthread_cond_t *cond, pthread_mutex_t *mutex,
-			       const struct timespec *abstime)  */
-	.globl	__pthread_cond_timedwait
-	.type	__pthread_cond_timedwait, @function
-	.align	5
-	cfi_startproc
-__pthread_cond_timedwait:
-.LSTARTCODE:
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
-#endif
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r11, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r11, 0)
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r13, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r13, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	add	#-64, r15
-	cfi_adjust_cfa_offset (64)
-
-	mov	r4, r8
-	mov	r5, r9
-	mov	r6, r13
-#ifdef PIC
-	mova	.Lgot0, r0
-	mov.l	.Lgot0, r12
-	add	r0, r12
-#endif
-
-	mov.l	@(4,r13), r0
-	mov.l	.L1g, r1
-	cmp/hs	r1, r0
-	bf	0f
-	bra	18f
-	 mov	#EINVAL, r0
-0:
-	/* Get internal lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bt	2f
-	bra	1f
-	 nop
-#ifdef PIC
-	.align	2
-.Lgot0:
-	.long	_GLOBAL_OFFSET_TABLE_
-#endif
-
-2:
-	/* Store the reference to the mutex.  If there is already a
-	   different value in there this is a bad user bug.  */
-	mov.l	@(dep_mutex,r8),r0
-	cmp/eq	#-1, r0
-	bt	17f
-	mov.l	r9, @(dep_mutex,r8)
-
-17:
-	/* Unlock the mutex.  */
-	mov.l	.Lmunlock1, r1
-	mov	#0, r5
-	bsrf	r1
-	 mov	r9, r4
-.Lmunlock1b:
-
-	tst	r0, r0
-	bt	0f
-	bra	16f
-	 nop
-0:
-	mov	#1, r2
-	mov	#0, r3
-
-	clrt
-	mov.l	@(total_seq,r8),r0
-	mov.l	@(total_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(total_seq,r8)
-	mov.l	r1,@(total_seq+4,r8)
-	mov.l	@(cond_futex,r8), r0
-	add	r2, r0
-	mov.l	r0, @(cond_futex,r8)
-	mov	#(1 << nwaiters_shift), r2
-	mov.l	@(cond_nwaiters,r8), r0
-	add	r2, r0
-	mov.l	r0, @(cond_nwaiters,r8)
-
-	/* Get and store current wakeup_seq value.  */
-	mov.l	@(wakeup_seq,r8), r10
-	mov.l	@(wakeup_seq+4,r8), r11
-	mov.l	@(broadcast_seq,r8), r0
-	mov.l	r0, @(4,r15)
-
-8:
-	/* Get current time.  */
-#ifdef __NR_clock_gettime
-	/* Get the clock number.	 */
-	mov.l	@(cond_nwaiters,r8), r4
-	mov	#((1 << nwaiters_shift) - 1), r0
-	and	r0, r4
-	/* Only clocks 0 and 1 are allowed.  Both are handled in the
-	   kernel.  */
-	mov	r15, r5
-	add	#16, r5
-	mov.w	.L__NR_clock_gettime, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	/* Compute relative timeout.  */
-	mov.l	@r13, r2
-	mov.l	@(4,r13), r3
-	mov.l	@(16,r15), r0
-	bra	0f
-	 mov.l	@(20,r15), r1
-.L__NR_clock_gettime:
-	.word	__NR_clock_gettime
-
-0:
-#else
-	mov	r15, r4
-	add	#16, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	/* Compute relative timeout.  */
-	mov.l	@(20,r15), r0
-	mov.w	.L1k, r1
-	dmulu.l	r0, r1		/* Micro seconds to nano seconds.  */
-	mov.l	@r13, r2
-	mov.l	@(4,r13), r3
-	mov.l	@(16,r15), r0
-	sts	macl, r1
-#endif
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	12f
-	mov.l	.L1g, r1
-	add	r1, r3
-	add	#-1, r2
-12:
-	mov	#-ETIMEDOUT, r1
-	mov.l	r1, @(12,r15)
-	cmp/pz	r2
-	bf	6f		/* Time is already up.  */
-
-	/* Store relative timeout.  */
-	mov.l	r2, @(16,r15)
-	mov.l	r3, @(20,r15)
-	mov.l	@(cond_futex,r8), r1
-	mov.l	r1, @(8,r15)
-
-	/* Unlock.  */
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bt	4f
-	bra	3f
-	 nop
-4:
-.LcleanupSTART:
-	mov.l	.Lenable1, r1
-	bsrf	r1
-	 nop
-.Lenable1b:
-	mov.l	r0, @r15
-
-	mov	r15, r7
-	add	#16, r7
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAIT, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-#endif
-99:
-	mov.l	@(8,r15), r6
-	mov	r8, r4
-	add	#cond_futex, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov.l	r0, @(12,r15)
-
-	mov.l	.Ldisable1, r1
-	bsrf	r1
-	 mov.l	@r15, r4
-.Ldisable1b:
-.LcleanupEND:
-
-	/* Lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bf	5f
-6:
-	mov.l	@(broadcast_seq,r8), r0
-	mov.l	@(4,r15), r1
-	cmp/eq	r0, r1
-	bf	23f
-
-	mov.l	@(woken_seq,r8), r0
-	mov.l	@(woken_seq+4,r8), r1
-
-	mov.l	@(wakeup_seq,r8), r2
-	mov.l	@(wakeup_seq+4,r8), r3
-
-	cmp/eq	r3, r11
-	bf	7f
-	cmp/eq	r2, r10
-	bt	15f
-7:
-	cmp/eq	r1, r3
-	bf	9f
-	cmp/eq	r0, r2
-	bf	9f
-15:
-	mov.l	@(12,r15),r0
-	cmp/eq	#-ETIMEDOUT, r0
-	bf	8b
-
-	mov	#1, r2
-	mov	#0, r3
-
-	clrt
-	mov.l	@(wakeup_seq,r8),r0
-	mov.l	@(wakeup_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(wakeup_seq,r8)
-	mov.l	r1,@(wakeup_seq+4,r8)
-	mov.l	@(cond_futex,r8),r0
-	add	r2, r0
-	mov.l	r0,@(cond_futex,r8)
-	mov	#ETIMEDOUT, r0
-	bra	14f
-	 mov.l	r0, @(24,r15)
-
-23:
-	mov	#0, r0
-	bra	24f
-	 mov.l	r0, @(24,r15)
-
-9:
-	mov	#0, r0
-	mov.l	r0, @(24,r15)
-14:
-	mov	#1, r2
-	mov	#0, r3
-
-	clrt
-	mov.l	@(woken_seq,r8),r0
-	mov.l	@(woken_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(woken_seq,r8)
-	mov.l	r1,@(woken_seq+4,r8)
-
-24:
-	mov	#(1 << nwaiters_shift), r2
-	mov.l	@(cond_nwaiters,r8),r0
-	sub	r2, r0
-	mov.l	r0,@(cond_nwaiters,r8)
-
-	/* Wake up a thread which wants to destroy the condvar object.  */
-	mov.l	@(total_seq,r8),r0
-	mov.l	@(total_seq+4,r8),r1
-	and	r1, r0
-	not	r0, r0
-	cmp/eq	#0, r0
-	bf/s	25f
-	 mov	#((1 << nwaiters_shift) - 1), r1
-	not	r1, r1
-	mov.l	@(cond_nwaiters,r8),r0
-	tst	r1, r0
-	bf	25f
-
-	mov	r8, r4
-	add	#cond_nwaiters, r4
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAKE, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAKE, r0
-	or	r0, r5
-#endif
-99:
-	mov	#1, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-25:
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	10f
-
-11:
-	mov	r9, r4
-	mov.l	.Lmlocki1, r1
-	bsrf	r1
-	 nop
-.Lmlocki1b:
-
-	/* We return the result of the mutex_lock operation if it failed.  */
-	tst	r0, r0
-	bf	18f
-	mov.l	@(24,r15), r0
-
-18:
-	cfi_remember_state
-	add	#64, r15
-	cfi_adjust_cfa_offset (-64)
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r13
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r13)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	mov.l	@r15+, r11
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r11)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	rts
-	 mov.l	@r15+, r8
-	/* Omit CFI for restore in delay slot.  */
-	cfi_restore_state
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-.L1k:
-	.word	1000
-	.align	2
-.Lmunlock1:
-	.long	__pthread_mutex_unlock_usercnt-.Lmunlock1b
-.Lenable1:
-	.long	__pthread_enable_asynccancel-.Lenable1b
-.Ldisable1:
-	.long	__pthread_disable_asynccancel-.Ldisable1b
-.Lmlocki1:
-	.long	__pthread_mutex_cond_lock-.Lmlocki1b
-.L1g:
-	.long	1000000000
-
-1:
-	/* Initial locking failed.  */
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait2, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait2b:
-	bra	2b
-	 nop
-
-3:
-	/* Unlock in loop requires wakeup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lmwait2, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lmwait2b:
-	bra	4b
-	 nop
-
-5:
-	/* Locking in loop failed.  */
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait3, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait3b:
-	bra	6b
-	 nop
-
-10:
-	/* Unlock after loop requires wakeup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lmwait3, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lmwait3b:
-	bra	11b
-	 nop
-
-16:
-	/* The initial unlocking of the mutex failed.  */
-	mov.l	r0, @(24,r15)
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	17f
-
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lmwait4, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lmwait4b:
-17:
-	bra	18b
-	 mov.l	@(24,r15), r0
-
-	.align	2
-.Lwait2:
-	.long	__lll_lock_wait-.Lwait2b
-.Lmwait2:
-	.long	__lll_unlock_wake-.Lmwait2b
-.Lwait3:
-	.long	__lll_lock_wait-.Lwait3b
-.Lmwait3:
-	.long	__lll_unlock_wake-.Lmwait3b
-.Lmwait4:
-	.long	__lll_unlock_wake-.Lmwait4b
-	.size	__pthread_cond_timedwait, .-__pthread_cond_timedwait
-versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
-		  GLIBC_2_3_2)
-
-
-	.type	__condvar_tw_cleanup, @function
-__condvar_tw_cleanup:
-	mov	r4, r11
-
-	/* Get internal lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bt	1f
-	 nop
-
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait5, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait5b:
-
-1:
-	mov.l	@(broadcast_seq,r8), r0
-	mov.l	@(4,r15), r1
-	cmp/eq	r0, r1
-	bf	3f
-
-	mov	#1, r2
-	mov	#0, r3
-
-	/* We increment the wakeup_seq counter only if it is lower than
-	   total_seq.  If this is not the case the thread was woken and
-	   then canceled.  In this case we ignore the signal.  */
-	mov.l	@(total_seq+4,r8), r0
-	mov.l	@(wakeup_seq+4,r8), r1
-	cmp/hi	r1, r0
-	bt/s	6f
-	 cmp/hi	r0, r1
-	bt	7f
-	mov.l	@(total_seq,r8), r0
-	mov.l	@(wakeup_seq,r8), r1
-	cmp/hs	r0, r1
-	bt	7f
-
-6:
-	clrt
-	mov.l	@(wakeup_seq,r8),r0
-	mov.l	@(wakeup_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(wakeup_seq,r8)
-	mov.l	r1,@(wakeup_seq+4,r8)
-	mov.l	@(cond_futex,r8),r0
-	add	r2, r0
-	mov.l	r0,@(cond_futex,r8)
-
-7:
-	clrt
-	mov.l	@(woken_seq,r8),r0
-	mov.l	@(woken_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(woken_seq,r8)
-	mov.l	r1,@(woken_seq+4,r8)
-
-3:
-	mov	#(1 << nwaiters_shift), r2
-	mov.l	@(cond_nwaiters,r8),r0
-	sub	r2, r0
-	mov.l	r0,@(cond_nwaiters,r8)
-
-	/* Wake up a thread which wants to destroy the condvar object.  */
-	mov	#0, r10
-	mov.l	@(total_seq,r8),r0
-	mov.l	@(total_seq+4,r8),r1
-	and	r1, r0
-	not	r0, r0
-	cmp/eq	#0, r0
-	bf/s	4f
-	 mov	#((1 << nwaiters_shift) - 1), r1
-	not	r1, r1
-	mov.l	@(cond_nwaiters,r8),r0
-	tst	r1, r0
-	bf	4f
-
-	mov	r8, r4
-	add	#cond_nwaiters, r4
-	mov	#FUTEX_WAKE, r5
-	mov	#1, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov	#1, r10
-
-4:
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bt	2f
-
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lmwait5, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lmwait5b:
-
-2:
-	/* Wake up all waiters to make sure no signal gets lost.  */
-	tst	r10, r10
-	bf/s	5f
-	 mov	r8, r4
-	add	#cond_futex, r4
-	mov	#FUTEX_WAKE, r5
-	mov	#-1, r6
-	shlr	r6		/* r6 = 0x7fffffff */
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-5:
-        mov.l   .Lmlocki5, r1
-        bsrf    r1
-         mov     r9, r4
-.Lmlocki5b:
-
-.LcallUR:
-	mov.l	.Lresume, r1
-#ifdef PIC
-	add	r12, r1
-#endif
-	jsr	@r1
-	 mov	r11, r4
-	sleep
-
-	.align	2
-.Lwait5:
-	.long   __lll_lock_wait-.Lwait5b
-.Lmwait5:
-        .long   __lll_unlock_wake-.Lmwait5b
-.Lmlocki5:
-	.long   __pthread_mutex_cond_lock-.Lmlocki5b
-.Lresume:
-#ifdef PIC
-	.long	_Unwind_Resume@GOTOFF
-#else
-	.long	_Unwind_Resume
-#endif
-.LENDCODE:
-	cfi_endproc
-	.size	__condvar_tw_cleanup, .-__condvar_tw_cleanup
-
-
-	.section .gcc_except_table,"a",@progbits
-.LexceptSTART:
-	.byte	DW_EH_PE_omit			! @LPStart format (omit)
-	.byte	DW_EH_PE_omit			! @TType format (omit)
-	.byte	DW_EH_PE_sdata4			! call-site format
-	.uleb128 .Lcstend-.Lcstbegin
-.Lcstbegin:
-	.ualong	.LcleanupSTART-.LSTARTCODE
-	.ualong	.LcleanupEND-.LcleanupSTART
-	.ualong	__condvar_tw_cleanup-.LSTARTCODE
-	.uleb128  0
-	.ualong	.LcallUR-.LSTARTCODE
-	.ualong	.LENDCODE-.LcallUR
-	.ualong	0
-	.uleb128  0
-.Lcstend:
-
-
-#ifdef SHARED
-	.hidden DW.ref.__gcc_personality_v0
-	.weak   DW.ref.__gcc_personality_v0
-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
-	.align 4
-	.type   DW.ref.__gcc_personality_v0, @object
-	.size   DW.ref.__gcc_personality_v0, 4
-DW.ref.__gcc_personality_v0:
-	.long   __gcc_personality_v0
-#endif
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S b/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
deleted file mode 100644
index ad01966..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
+++ /dev/null
@@ -1,687 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <lowlevellock.h>
-#include <lowlevelcond.h>
-#include <tcb-offsets.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-	.text
-
-/* int pthread_cond_wait (pthread_cond_t *cond, pthread_mutex_t *mutex)  */
-	.globl	__pthread_cond_wait
-	.type	__pthread_cond_wait, @function
-	.align	5
-	cfi_startproc
-__pthread_cond_wait:
-.LSTARTCODE:
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
-#endif
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r11, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r11, 0)
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	add	#-48, r15
-	cfi_adjust_cfa_offset (48)
-
-	mov	r4, r8
-	mov	r5, r9
-#ifdef PIC
-	mova	.Lgot0, r0
-	mov.l	.Lgot0, r12
-	add	r0, r12
-#endif
-
-	/* Get internal lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bt	2f
-	bra	1f
-	 nop
-#ifdef PIC
-	.align	2
-.Lgot0:
-	.long	_GLOBAL_OFFSET_TABLE_
-#endif
-
-2:
-	/* Store the reference to the mutex.  If there is already a
-	   different value in there this is a bad user bug.  */
-	mov.l	@(dep_mutex,r8),r0
-	cmp/eq	#-1, r0
-	bt	15f
-	mov.l	r9, @(dep_mutex,r8)
-
-15:
-	/* Unlock the mutex.  */
-	mov.l	.Lmunlock0, r1
-	mov	#0, r5
-	bsrf	r1
-	 mov	r9, r4
-.Lmunlock0b:
-
-	tst	r0, r0
-	bt	0f
-	bra	12f
-	 nop
-0:
-	mov	#1, r2
-	mov	#0, r3
-
-	clrt
-	mov.l	@(total_seq,r8),r0
-	mov.l	@(total_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(total_seq,r8)
-	mov.l	r1,@(total_seq+4,r8)
-	mov.l	@(cond_futex,r8),r0
-	add	r2, r0
-	mov.l	r0,@(cond_futex,r8)
-	mov	#(1 << nwaiters_shift), r2
-	mov.l	@(cond_nwaiters,r8), r0
-	add	r2, r0
-	mov.l	r0, @(cond_nwaiters,r8)
-
-	/* Get and store current wakeup_seq value.  */
-	mov.l	@(wakeup_seq,r8), r10
-	mov.l	@(wakeup_seq+4,r8), r11
-	mov.l	@(broadcast_seq,r8), r0
-	mov.l	r0, @(4,r15)
-
-8:
-	mov.l	@(cond_futex,r8),r0
-	mov.l	r0, @(8,r15)
-
-	/* Unlock.  */
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	3f
-4:
-.LcleanupSTART:
-	mov.l	.Lenable0, r1
-	bsrf	r1
-	 nop
-.Lenable0b:
-	mov.l	r0, @r15
-
-	mov	#0, r7
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAIT, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff0, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-#endif
-99:
-	mov.l	@(8,r15), r6
-	mov	r8, r4
-	add	#cond_futex, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	mov.l	.Ldisable0, r1
-	bsrf	r1
-	 mov.l	@r15, r4
-.Ldisable0b:
-.LcleanupEND:
-
-	/* Lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bf	5f
-6:
-	mov.l	@(broadcast_seq,r8), r0
-	mov.l	@(4,r15), r1
-	cmp/eq	r0, r1
-	bf	16f
-
-	mov.l	@(woken_seq,r8), r0
-	mov.l	@(woken_seq+4,r8), r1
-
-	mov.l	@(wakeup_seq,r8), r2
-	mov.l	@(wakeup_seq+4,r8), r3
-
-	cmp/eq	r3, r11
-	bf	7f
-	cmp/eq	r2, r10
-	bt	8b
-7:
-	cmp/eq	r1, r3
-	bf	9f
-	cmp/eq	r0, r2
-	bt	8b
-9:
-	mov	#1, r2
-	mov	#0, r3
-
-	clrt
-	mov.l	@(woken_seq,r8),r0
-	mov.l	@(woken_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(woken_seq,r8)
-	mov.l	r1,@(woken_seq+4,r8)
-
-16:
-	mov	#(1 << nwaiters_shift), r2
-	mov.l	@(cond_nwaiters,r8),r0
-	sub	r2, r0
-	mov.l	r0,@(cond_nwaiters,r8)
-
-	/* Wake up a thread which wants to destroy the condvar object.  */
-	mov.l	@(total_seq,r8),r0
-	mov.l	@(total_seq+4,r8),r1
-	and	r1, r0
-	not	r0, r0
-	cmp/eq	#0, r0
-	bf/s	17f
-	 mov	#((1 << nwaiters_shift) - 1), r1
-	not	r1, r1
-	mov.l	@(cond_nwaiters,r8),r0
-	tst	r1, r0
-	bf	17f
-
-	mov	r8, r4
-	add	#cond_nwaiters, r4
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAKE, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff0, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAKE, r0
-	or	r0, r5
-#endif
-99:
-	mov	#1, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-17:
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	10f
-
-11:
-	mov.l	.Lmlocki0, r1
-	bsrf	r1
-	 mov	r9, r4
-.Lmlocki0b:
-	/* We return the result of the mutex_lock operation.  */
-
-14:
-	cfi_remember_state
-	add	#48, r15
-	cfi_adjust_cfa_offset (-48)
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	mov.l	@r15+, r11
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r11)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	rts
-	 mov.l	@r15+, r8
-	/* Omit CFI for restore in delay slot.  */
-	cfi_restore_state
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff0:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-	.align	2
-.Lmunlock0:
-	.long	__pthread_mutex_unlock_usercnt-.Lmunlock0b
-.Lenable0:
-	.long	__pthread_enable_asynccancel-.Lenable0b
-.Ldisable0:
-	.long	__pthread_disable_asynccancel-.Ldisable0b
-.Lmlocki0:
-	.long	__pthread_mutex_cond_lock-.Lmlocki0b
-
-1:
-	/* Initial locking failed.  */
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait0, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait0b:
-	bra	2b
-	 nop
-3:
-	/* Unlock in loop requires waekup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake0, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake0b:
-	bra	4b
-	 nop
-
-5:
-	/* Locking in loop failed.  */
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait1, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait1b:
-	bra	6b
-	 nop
-
-10:
-	/* Unlock after loop requires wakeup.  */
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake1, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake1b:
-	bra	11b
-	 nop
-
-12:
-	/* The initial unlocking of the mutex failed.  */
-	mov.l	r0, @(12,r15)
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bf	13f
-
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake2, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake2b:
-
-13:
-	bra	14b
-	 mov.l	@(12,r15), r0
-
-	.align	2
-.Lwait0:
-	.long	__lll_lock_wait-.Lwait0b
-.Lwake0:
-	.long	__lll_unlock_wake-.Lwake0b
-.Lwait1:
-	.long	__lll_lock_wait-.Lwait1b
-.Lwake1:
-	.long	__lll_unlock_wake-.Lwake1b
-.Lwake2:
-	.long	__lll_unlock_wake-.Lwake2b
-	.size	__pthread_cond_wait, .-__pthread_cond_wait
-versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
-		  GLIBC_2_3_2)
-
-
-	.type	__condvar_w_cleanup, @function
-__condvar_w_cleanup:
-	mov	r4, r11
-
-	/* Get internal lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if cond_lock != 0
-	CMPXCHG (r3, @(cond_lock,r8), r4, r2)
-#else
-	CMPXCHG (r3, @r8, r4, r2)
-#endif
-	bt	1f
-	 nop
-
-	mov	r8, r5
-#if cond_lock != 0
-	add	#cond_lock, r5
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r6
-	mov	#LLL_SHARED, r6
-99:
-	extu.b	r6, r6
-	mov.l	.Lwait3, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait3b:
-
-1:
-	mov.l	@(broadcast_seq,r8), r0
-	mov.l	@(4,r15), r1
-	cmp/eq	r0, r1
-	bf	3f
-
-	mov	#1, r2
-	mov	#0, r3
-
-	/* We increment the wakeup_seq counter only if it is lower than
-	   total_seq.  If this is not the case the thread was woken and
-	   then canceled.  In this case we ignore the signal.  */
-	mov.l	@(total_seq+4,r8), r0
-	mov.l	@(wakeup_seq+4,r8), r1
-	cmp/hi	r1, r0
-	bt/s	6f
-	 cmp/hi	r0, r1
-	bt	7f
-	mov.l	@(total_seq,r8), r0
-	mov.l	@(wakeup_seq,r8), r1
-	cmp/hs	r0, r1
-	bt	7f
-
-6:
-	clrt
-	mov.l	@(wakeup_seq,r8),r0
-	mov.l	@(wakeup_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(wakeup_seq,r8)
-	mov.l	r1,@(wakeup_seq+4,r8)
-	mov.l	@(cond_futex,r8),r0
-	add	r2, r0
-	mov.l	r0,@(cond_futex,r8)
-
-7:
-	clrt
-	mov.l	@(woken_seq,r8),r0
-	mov.l	@(woken_seq+4,r8),r1
-	addc	r2, r0
-	addc	r3, r1
-	mov.l	r0,@(woken_seq,r8)
-	mov.l	r1,@(woken_seq+4,r8)
-
-3:
-	mov	#(1 << nwaiters_shift), r2
-	mov.l	@(cond_nwaiters,r8),r0
-	sub	r2, r0
-	mov.l	r0,@(cond_nwaiters,r8)
-
-	/* Wake up a thread which wants to destroy the condvar object.  */
-	mov	#0, r10
-	mov.l	@(total_seq,r8),r0
-	mov.l	@(total_seq+4,r8),r1
-	and	r1, r0
-	not	r0, r0
-	cmp/eq	#0, r0
-	bf/s	4f
-	 mov	#((1 << nwaiters_shift) - 1), r1
-	not	r1, r1
-	mov.l	@(cond_nwaiters,r8),r0
-	tst	r1, r0
-	bf	4f
-
-	mov	r8, r4
-	add	#cond_nwaiters, r4
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAKE, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff1, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAKE, r0
-	or	r0, r5
-#endif
-99:
-	mov	#1, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov	#1, r10
-
-4:
-#if cond_lock != 0
-	DEC (@(cond_lock,r8), r2)
-#else
-	DEC (@r8, r2)
-#endif
-	tst	r2, r2
-	bt	2f
-
-	mov	r8, r4
-#if cond_lock != 0
-	add	#cond_lock, r4
-#endif
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bf/s	99f
-	 mov	#LLL_PRIVATE, r5
-	mov	#LLL_SHARED, r5
-99:
-	mov.l	.Lwake3, r1
-	bsrf	r1
-	 extu.b	r5, r5
-.Lwake3b:
-
-2:
-	/* Wake up all waiters to make sure no signal gets lost.  */
-	tst	r10, r10
-	bf/s	5f
-	 mov	r8, r4
-	add	#cond_futex, r4
-	mov.l	@(dep_mutex,r8), r0
-	cmp/eq	#-1, r0
-	bt/s	99f
-	 mov	#FUTEX_WAKE, r5
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
-	extu.b	r5, r5
-#else
-	stc	gbr, r1
-	mov.w	.Lpfoff1, r2
-	add	r2, r1
-	mov.l	@r1, r5
-	mov	#FUTEX_WAKE, r0
-	or	r0, r5
-#endif
-99:
-	mov	#-1, r6
-	shlr	r6		/* r6 = 0x7fffffff */
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-5:
-        mov.l   .Lmlocki3, r1
-        bsrf    r1
-         mov     r9, r4
-.Lmlocki3b:
-
-.LcallUR:
-	mov.l	.Lresume, r1
-#ifdef PIC
-	add	r12, r1
-#endif
-	jsr	@r1
-	 mov	r11, r4
-	sleep
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff1:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-	.align	2
-.Lwait3:
-	.long   __lll_lock_wait-.Lwait3b
-.Lwake3:
-        .long   __lll_unlock_wake-.Lwake3b
-.Lmlocki3:
-	.long   __pthread_mutex_cond_lock-.Lmlocki3b
-.Lresume:
-#ifdef PIC
-	.long	_Unwind_Resume@GOTOFF
-#else
-	.long	_Unwind_Resume
-#endif
-.LENDCODE:
-	cfi_endproc
-	.size	__condvar_w_cleanup, .-__condvar_w_cleanup
-
-
-	.section .gcc_except_table,"a",@progbits
-.LexceptSTART:
-	.byte	DW_EH_PE_omit			! @LPStart format (omit)
-	.byte	DW_EH_PE_omit			! @TType format (omit)
-	.byte	DW_EH_PE_sdata4			! call-site format
-	.uleb128 .Lcstend-.Lcstbegin
-.Lcstbegin:
-	.ualong	.LcleanupSTART-.LSTARTCODE
-	.ualong	.LcleanupEND-.LcleanupSTART
-	.ualong	__condvar_w_cleanup-.LSTARTCODE
-	.uleb128  0
-	.ualong	.LcallUR-.LSTARTCODE
-	.ualong	.LENDCODE-.LcallUR
-	.ualong	0
-	.uleb128  0
-.Lcstend:
-
-
-#ifdef SHARED
-	.hidden DW.ref.__gcc_personality_v0
-	.weak   DW.ref.__gcc_personality_v0
-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
-	.align 4
-	.type   DW.ref.__gcc_personality_v0, @object
-	.size   DW.ref.__gcc_personality_v0, 4
-DW.ref.__gcc_personality_v0:
-	.long   __gcc_personality_v0
-#endif
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S b/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
deleted file mode 100644
index 34790fd..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
+++ /dev/null
@@ -1,270 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <lowlevelrwlock.h>
-#include <pthread-errnos.h>
-#include <tcb-offsets.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	__pthread_rwlock_rdlock
-	.type	__pthread_rwlock_rdlock,@function
-	.align	5
-	cfi_startproc
-__pthread_rwlock_rdlock:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-
-	/* Get the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(WRITER,r8), r0
-	tst	r0, r0
-	bf	14f
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	tst	r0, r0
-	bt	5f
-	mov	#FLAGS, r0
-	mov.b	@(r0,r8), r0
-	tst	r0, r0
-	bt	5f
-3:
-	mov.l	@(READERS_QUEUED,r8), r0
-	add	#1, r0
-	mov.l	r0, @(READERS_QUEUED,r8)
-	tst	r0, r0
-	bt	4f
-
-	mov.l	@(READERS_WAKEUP,r8), r9
-
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	10f
-11:
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	mov	#(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
-	xor	r0, r5
-	extu.b	r5, r5
-#else
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-# if FUTEX_WAIT != 0
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-# endif
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r0
-	xor	r0, r5
-#endif
-	mov	r8, r4
-	add	#READERS_WAKEUP, r4
-	mov	r9, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	/* Reget the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	12f
-13:
-	mov.l	@(READERS_QUEUED,r8), r0
-	add	#-1, r0
-	bra	2b
-	 mov.l	r0, @(READERS_QUEUED,r8)
-
-5:
-	mov	#0, r3
-	mov.l	@(NR_READERS,r8), r0
-	add	#1, r0
-	mov.l	r0, @(NR_READERS,r8)
-	tst	r0, r0
-	bt	8f
-
-9:
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	6f
-7:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	r3, r0
-	cfi_restore_state
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-
-1:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait0, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait0b:
-	bra	2b
-	 nop
-14:
-	stc	gbr, r1
-	mov.w	.Ltidoff, r2
-	add	r2, r1
-	mov.l	@r1, r1
-	cmp/eq	r1, r0
-	bf	3b
-	/* Deadlock detected.  */
-	bra	9b
-	 mov	#EDEADLK, r3
-
-.Ltidoff:
-	.word	TID - TLS_PRE_TCB_SIZE
-
-6:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake0, r1
-	bsrf	r1
-	 nop
-.Lwake0b:
-	bra	7b
-	 mov	#0, r3
-
-8:
-	/* Overflow.  */
-	mov.l	@(NR_READERS,r8), r1
-	add	#-1, r1
-	mov.l	r1, @(NR_READERS,r8)
-	bra	9b
-	 mov	#EAGAIN, r3
-
-4:
-	/* Overflow.  */
-	mov.l	@(READERS_QUEUED,r8), r1
-	add	#-1, r1
-	mov.l	r1, @(READERS_QUEUED,r8)
-	bra	9b
-	 mov	#EAGAIN, r3
-
-10:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake1, r1
-	bsrf	r1
-	 nop
-.Lwake1b:
-	bra	11b
-	 nop
-
-12:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait1, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait1b:
-	bra	13b
-	 nop
-	cfi_endproc
-
-	.align	2
-.Lwait0:
-	.long	__lll_lock_wait-.Lwait0b
-.Lwake0:
-	.long	__lll_unlock_wake-.Lwake0b
-.Lwait1:
-	.long	__lll_lock_wait-.Lwait1b
-.Lwake1:
-	.long	__lll_unlock_wake-.Lwake1b
-	.size	__pthread_rwlock_rdlock,.-__pthread_rwlock_rdlock
-
-strong_alias (__pthread_rwlock_rdlock, pthread_rwlock_rdlock)
-hidden_def (__pthread_rwlock_rdlock)
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S b/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
deleted file mode 100644
index 07f7b21..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
+++ /dev/null
@@ -1,339 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <lowlevelrwlock.h>
-#include <pthread-errnos.h>
-#include <tcb-offsets.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	pthread_rwlock_timedrdlock
-	.type	pthread_rwlock_timedrdlock,@function
-	.align	5
-	cfi_startproc
-pthread_rwlock_timedrdlock:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	add	#-8, r15
-	cfi_adjust_cfa_offset (8)
-	mov	r4, r8
-	mov	r5, r9
-
-	/* Get the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(WRITER,r8), r0
-	tst	r0, r0
-	bf	14f
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	tst	r0, r0
-	bt	5f
-	mov	#FLAGS, r0
-	mov.b	@(r0,r8), r0
-	tst	r0, r0
-	bt	5f
-3:
-	/* Check the value of the timeout parameter.  */
-	mov.l	.L1g0, r1
-	mov.l	@(4,r9), r0
-	cmp/hs	r1, r0
-	bt	19f
-
-	mov.l	@(READERS_QUEUED,r8), r0
-	add	#1, r0
-	mov.l	r0, @(READERS_QUEUED,r8)
-	tst	r0, r0
-	bt	4f
-
-	mov.l	@(READERS_WAKEUP,r8), r10
-
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	10f
-
-11:
-	/* Get current time.  */
-	mov	r15, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	mov.l	@(4,r15), r0
-	mov.w	.L1k0, r1
-	dmulu.l	r0, r1		/* Milli seconds to nano seconds.  */
-	mov.l	@r9, r2
-	mov.l	@(4,r9), r3
-	mov.l	@r15, r0
-	sts	macl, r1
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	15f
-	mov.l	.L1g0, r1
-	add	r1, r3
-	add	#-1, r2
-15:
-	cmp/pz	r2
-	bf	16f		/* Time is already up.  */
-
-	/* Store relative timeout.  */
-	mov.l	r2, @r15
-	mov.l	r3, @(4,r15)
-
-	/* Futex call.  */
-	mov	r15, r7
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	mov	#(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
-	xor	r0, r5
-	extu.b	r5, r5
-#else
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-# if FUTEX_WAIT != 0
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-# endif
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r0
-	xor	r0, r5
-#endif
-	mov	r10, r6
-	mov	r8, r4
-	add	#READERS_WAKEUP, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov	r0, r3
-
-17:
-	/* Reget the lock.  */
-	mov	#0, r5
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r5, @r8, r4, r2)
-#else
-	CMPXCHG (r5, @(MUTEX,r8), r4, r2)
-#endif
-	bf	12f
-
-13:
-	mov.l	@(READERS_QUEUED,r8), r0
-	add	#-1, r0
-	mov.l	r0, @(READERS_QUEUED,r8)
-	mov	#-ETIMEDOUT, r0
-	cmp/eq	r0, r3
-	bf	2b
-
-18:
-	bra	9f
-	 mov	#ETIMEDOUT, r3
-
-5:
-	mov	#0, r3
-	mov.l	@(NR_READERS,r8), r0
-	add	#1, r0
-	mov.l	r0, @(NR_READERS,r8)
-	tst	r0, r0
-	bt	8f
-
-9:
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	6f
-7:
-	cfi_remember_state
-	add	#8,r15
-	cfi_adjust_cfa_offset (-8)
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	r3, r0
-	cfi_restore_state
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-	.align	2
-.L1k0:
-	.long	1000
-.L1g0:
-	.long	1000000000
-
-1:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait2, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait2b:
-	bra	2b
-	 nop
-14:
-	stc	gbr, r1
-	mov.w	.Ltidoff, r2
-	add	r2, r1
-	mov.l	@r1, r1
-	cmp/eq	r1, r0
-	bf	3b
-	/* Deadlock detected.  */
-	bra	9b
-	 mov	#EDEADLK, r3
-
-.Ltidoff:
-	.word	TID - TLS_PRE_TCB_SIZE
-
-6:
-	mov	r3, r10
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake2, r1
-	bsrf	r1
-	 nop
-.Lwake2b:
-	bra	7b
-	 mov	r10, r3
-
-8:
-	/* Overflow.  */
-	mov.l	@(NR_READERS,r8), r1
-	add	#-1, r1
-	mov.l	r1, @(NR_READERS,r8)
-	bra	9b
-	 mov	#EAGAIN, r3
-
-4:
-	/* Overflow.  */
-	mov.l	@(READERS_QUEUED,r8), r1
-	add	#-1, r1
-	mov.l	r1, @(READERS_QUEUED,r8)
-	bra	9b
-	 mov	#EAGAIN, r3
-
-10:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake3, r1
-	bsrf	r1
-	 nop
-.Lwake3b:
-	bra	11b
-	 nop
-
-12:
-	mov	r3, r10
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait3, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait3b:
-	bra	13b
-	 mov	r10, r3
-
-16:
-	bra	17b
-	 mov	#-ETIMEDOUT, r3
-
-19:
-	bra	9b
-	 mov	#EINVAL, r3
-	cfi_endproc
-
-	.align	2
-.Lwait2:
-	.long	__lll_lock_wait-.Lwait2b
-.Lwake2:
-	.long	__lll_unlock_wake-.Lwake2b
-.Lwait3:
-	.long	__lll_lock_wait-.Lwait3b
-.Lwake3:
-	.long	__lll_unlock_wake-.Lwake3b
-	.size	pthread_rwlock_timedrdlock,.-pthread_rwlock_timedrdlock
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S b/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
deleted file mode 100644
index dd25e95..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
+++ /dev/null
@@ -1,323 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <lowlevelrwlock.h>
-#include <pthread-errnos.h>
-#include <tcb-offsets.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	pthread_rwlock_timedwrlock
-	.type	pthread_rwlock_timedwrlock,@function
-	.align	5
-	cfi_startproc
-pthread_rwlock_timedwrlock:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	add	#-8, r15
-	cfi_adjust_cfa_offset (8)
-	mov	r4, r8
-	mov	r5, r9
-
-	/* Get the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(WRITER,r8), r0
-	tst	r0, r0
-	bf	14f
-	mov.l	@(NR_READERS,r8), r0
-	tst	r0, r0
-	bt	5f
-3:
-	/* Check the value of the timeout parameter.  */
-	mov.l	.L1g1, r1
-	mov.l	@(4,r9), r0
-	cmp/hs	r1, r0
-	bt	19f
-
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	add	#1, r0
-	mov.l	r0, @(WRITERS_QUEUED,r8)
-	tst	r0, r0
-	bt	4f
-
-	mov.l	@(WRITERS_WAKEUP,r8), r10
-
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	10f
-
-11:
-	/* Get current time.  */
-	mov	r15, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	mov.l	@(4,r15), r0
-	mov.w	.L1k1, r1
-	dmulu.l	r0, r1		/* Milli seconds to nano seconds.  */
-	mov.l	@r9, r2
-	mov.l	@(4,r9), r3
-	mov.l	@r15, r0
-	sts	macl, r1
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	15f
-	mov.l	.L1g1, r1
-	add	r1, r3
-	add	#-1, r2
-15:
-	cmp/pz	r2
-	bf	16f		/* Time is already up.  */
-
-	/* Store relative timeout.  */
-	mov.l	r2, @r15
-	mov.l	r3, @(4,r15)
-
-	/* Futex call.  */
-	mov	r15, r7
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	mov	#(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
-	xor	r0, r5
-	extu.b	r5, r5
-#else
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-# if FUTEX_WAIT != 0
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-# endif
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r0
-	xor	r0, r5
-#endif
-	mov	r10, r6
-	mov	r8, r4
-	add	#WRITERS_WAKEUP, r4
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-	mov	r0, r3
-
-17:
-	/* Reget the lock.  */
-	mov	#0, r5
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r5, @r8, r4, r2)
-#else
-	CMPXCHG (r5, @(MUTEX,r8), r4, r2)
-#endif
-	bf	12f
-
-13:
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	add	#-1, r0
-	mov.l	r0, @(WRITERS_QUEUED,r8)
-	mov	#-ETIMEDOUT, r0
-	cmp/eq	r0, r3
-	bf	2b
-
-18:
-	bra	9f
-	 mov	#ETIMEDOUT, r3
-
-19:
-	bra	9f
-	 mov	#EINVAL, r3
-
-5:
-	mov	#0, r3
-	stc	gbr, r0
-	mov.w	.Ltidoff, r1
-	mov.l	@(r0,r1), r0
-	mov.l	r0, @(WRITER,r8)
-9:
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	6f
-7:
-	cfi_remember_state
-	add	#8,r15
-	cfi_adjust_cfa_offset (-8)
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	r3, r0
-	cfi_restore_state
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-.L1k1:
-	.word	1000
-	.align	2
-.L1g1:
-	.long	1000000000
-
-1:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait6, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait6b:
-	bra	2b
-	 nop
-14:
-	stc	gbr, r1
-	mov.w	.Ltidoff, r2
-	add	r2, r1
-	mov.l	@r1, r1
-	cmp/eq	r1, r0
-	bf	3b
-	bra	9b
-	 mov	#EDEADLK, r3
-6:
-	mov	r3, r10
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake6, r1
-	bsrf	r1
-	 nop
-.Lwake6b:
-	bra	7b
-	 mov	r10, r3
-
-.Ltidoff:
-	.word	TID - TLS_PRE_TCB_SIZE
-
-4:
-	/* Overflow.  */
-	mov.l	@(WRITERS_QUEUED,r8), r1
-	add	#-1, r1
-	mov.l	r1, @(WRITERS_QUEUED,r8)
-	bra	9b
-	 mov	#EAGAIN, r3
-
-10:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake7, r1
-	bsrf	r1
-	 nop
-.Lwake7b:
-	bra	11b
-	 nop
-
-12:
-	mov	r3, r10
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait7, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait7b:
-	bra	13b
-	 mov	r10, r3
-
-16:
-	bra	17b
-	 mov	#-ETIMEDOUT, r3
-	cfi_endproc
-
-	.align	2
-.Lwait6:
-	.long	__lll_lock_wait-.Lwait6b
-.Lwake6:
-	.long	__lll_unlock_wake-.Lwake6b
-.Lwait7:
-	.long	__lll_lock_wait-.Lwait7b
-.Lwake7:
-	.long	__lll_unlock_wake-.Lwake7b
-	.size	pthread_rwlock_timedwrlock,.-pthread_rwlock_timedwrlock
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S b/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
deleted file mode 100644
index db99ee4..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
+++ /dev/null
@@ -1,221 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <lowlevelrwlock.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	__pthread_rwlock_unlock
-	.type	__pthread_rwlock_unlock,@function
-	.align	5
-	cfi_startproc
-__pthread_rwlock_unlock:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-
-	/* Get the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(WRITER,r8), r0
-	tst	r0, r0
-	bf	5f
-	mov.l	@(NR_READERS,r8), r0
-	add	#-1, r0
-	mov.l	r0, @(NR_READERS,r8)
-	tst	r0, r0
-	bf	6f
-5:
-	mov	#0, r0
-	mov.l	r0, @(WRITER,r8)
-	mov	#1, r6
-	mov	r8, r4
-	add	#WRITERS_WAKEUP, r4
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	tst	r0, r0
-	bf	0f
-
-	/* If also no readers waiting nothing to do.  */
-	mov.l	@(READERS_QUEUED,r8), r0
-	tst	r0, r0
-	bt	6f
-
-	mov	#-1, r6
-	shlr	r6		/* r6 = 0x7fffffff */
-	mov	r8, r4
-	add	#READERS_WAKEUP, r4
-
-0:
-	mov.l	@r4, r0
-	add	#1, r0
-	mov.l	r0, @r4
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	7f
-
-8:
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	mov	#(FUTEX_PRIVATE_FLAG|FUTEX_WAKE), r0
-	xor	r0, r5
-	extu.b	r5, r5
-#else
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov	#FUTEX_WAKE, r0
-	or	r0, r5
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r0
-	xor	r0, r5
-#endif
-	mov	#SYS_futex, r3
-	mov	#0, r7
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	#0, r0
-	cfi_restore_state
-6:
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	3f
-4:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	#0, r0
-	cfi_restore_state
-
-1:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait8, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait8b:
-	bra	2b
-	 nop
-3:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake8, r1
-	bsrf	r1
-	 nop
-.Lwake8b:
-	bra	4b
-	 nop
-
-7:
-	mov.l	r4, @-r15
-	cfi_adjust_cfa_offset (4)
-	mov.l	r6, @-r15
-	cfi_adjust_cfa_offset (4)
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake9, r1
-	bsrf	r1
-	 nop
-.Lwake9b:
-
-	mov.l	@r15+, r6
-	cfi_adjust_cfa_offset (-4)
-	bra	8b
-	 mov.l	@r15+, r4
-
-	cfi_endproc
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-	.align	2
-.Lwait8:
-	.long	__lll_lock_wait-.Lwait8b
-.Lwake8:
-	.long	__lll_unlock_wake-.Lwake8b
-.Lwake9:
-	.long	__lll_unlock_wake-.Lwake9b
-	.size	__pthread_rwlock_unlock,.-__pthread_rwlock_unlock
-
-strong_alias (__pthread_rwlock_unlock, pthread_rwlock_unlock)
-hidden_def (__pthread_rwlock_unlock)
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S b/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
deleted file mode 100644
index 8802fa9..0000000
--- a/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <lowlevellock.h>
-#include <lowlevelrwlock.h>
-#include <pthread-errnos.h>
-#include <tcb-offsets.h>
-#include <kernel-features.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	__pthread_rwlock_wrlock
-	.type	__pthread_rwlock_wrlock,@function
-	.align	5
-	cfi_startproc
-__pthread_rwlock_wrlock:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-
-	/* Get the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	1f
-2:
-	mov.l	@(WRITER,r8), r0
-	tst	r0, r0
-	bf	14f
-	mov.l	@(NR_READERS,r8), r0
-	tst	r0, r0
-	bt	5f
-3:
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	add	#1, r0
-	mov.l	r0, @(WRITERS_QUEUED,r8)
-	tst	r0, r0
-	bt	4f
-
-	mov.l	@(WRITERS_WAKEUP,r8), r9
-
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	10f
-11:
-	mov	r8, r4
-	add	#WRITERS_WAKEUP, r4
-#ifdef __ASSUME_PRIVATE_FUTEX
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	mov	#(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
-	xor	r0, r5
-	extu.b	r5, r5
-#else
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-# if FUTEX_WAIT != 0
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-# endif
-	stc	gbr, r1
-	mov.w	.Lpfoff, r2
-	add	r2, r1
-	mov.l	@r1, r0
-	xor	r0, r5
-#endif
-	mov	r9, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	/* Reget the lock.  */
-	mov	#0, r3
-	mov	#1, r4
-#if MUTEX == 0
-	CMPXCHG (r3, @r8, r4, r2)
-#else
-	CMPXCHG (r3, @(MUTEX,r8), r4, r2)
-#endif
-	bf	12f
-13:
-	mov.l	@(WRITERS_QUEUED,r8), r0
-	add	#-1, r0
-	bra	2b
-	 mov.l	r0, @(WRITERS_QUEUED,r8)
-
-5:
-	mov	#0, r3
-	stc	gbr, r0
-	mov.w	.Ltidoff, r1
-	mov.l	@(r0,r1), r0
-	mov.l	r0, @(WRITER,r8)
-9:
-#if MUTEX == 0
-	DEC (@r8, r2)
-#else
-	DEC (@(MUTEX,r8), r2)
-#endif
-	tst	r2, r2
-	bf	6f
-7:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	r3, r0
-	cfi_restore_state
-
-1:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait4, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait4b:
-	bra	2b
-	 nop
-14:
-	stc	gbr, r1
-	mov.w	.Ltidoff, r2
-	add	r2, r1
-	mov.l	@r1, r1
-	cmp/eq	r1, r0
-	bf	3b
-	bra	9b
-	 mov	#EDEADLK, r3
-6:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake4, r1
-	bsrf	r1
-	 nop
-.Lwake4b:
-	bra	7b
-	 mov	#0, r3
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-	.word	PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-.Ltidoff:
-	.word	TID - TLS_PRE_TCB_SIZE
-
-4:
-	mov.l	@(WRITERS_QUEUED,r8), r1
-	add	#-1, r1
-	mov.l	r1, @(WRITERS_QUEUED,r8)
-	bra	9b
-	 mov	#EAGAIN, r3
-
-10:
-	mov	r8, r4
-#if MUTEX != 0
-	add	#MUTEX, r4
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r5
-	extu.b	r5, r5
-	mov.l	.Lwake5, r1
-	bsrf	r1
-	 nop
-.Lwake5b:
-	bra	11b
-	 nop
-
-12:
-	mov	r8, r5
-#if MUTEX != 0
-	add	#MUTEX, r5
-#endif
-	mov	#PSHARED, r0
-	mov.b	@(r0,r8), r6
-	extu.b	r6, r6
-	mov.l	.Lwait5, r1
-	bsrf	r1
-	 mov	r2, r4
-.Lwait5b:
-	bra	13b
-	 nop
-
-	cfi_endproc
-
-	.align	2
-.Lwait4:
-	.long	__lll_lock_wait-.Lwait4b
-.Lwake4:
-	.long	__lll_unlock_wake-.Lwake4b
-.Lwait5:
-	.long	__lll_lock_wait-.Lwait5b
-.Lwake5:
-	.long	__lll_unlock_wake-.Lwake5b
-
-strong_alias (__pthread_rwlock_wrlock, pthread_rwlock_wrlock)
-hidden_def (__pthread_rwlock_wrlock)
diff --git a/sysdeps/unix/sysv/linux/sh/sem_post.S b/sysdeps/unix/sysv/linux/sh/sem_post.S
deleted file mode 100644
index ccc6255..0000000
--- a/sysdeps/unix/sysv/linux/sh/sem_post.S
+++ /dev/null
@@ -1,111 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <pthread-errnos.h>
-#include <structsem.h>
-#include <lowlevellock.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	__new_sem_post
-	.type	__new_sem_post,@function
-	.align	5
-	cfi_startproc
-__new_sem_post:
-	mov.l	@(VALUE,r4), r2
-0:
-	mov.l	.Lmax, r1
-	cmp/eq	r1, r2
-	bt/s	3f
-	 mov	r2, r3
-	mov	r3, r5
-	add	#1, r5
-	CMPXCHG (r3, @(VALUE,r4), r5, r2)
-	bf	0b
-	mov.l	@(NWAITERS,r4), r2
-	tst	r2, r2
-	bt	2f
-	mov	#FUTEX_WAKE, r5
-	mov.l	@(PRIVATE,r4), r1
-	or	r1, r5
-	mov	#1, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	cmp/pz	r0
-	bf	1f
-2:
-	rts
-	 mov	#0, r0
-
-1:
-	bra	4f
-	 mov	#EINVAL, r2
-
-3:
-	mov	#EOVERFLOW, r2
-4:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mova	.Lgot3, r0
-	mov.l	.Lgot3, r12
-	add	r0, r12
-
-	mov.l	.Lerrno3, r0
-	stc	gbr, r1
-	mov.l	@(r0, r12), r0
-	bra	.Lexit
-	 add	r1, r0
-	.align	2
-.Lerrno3:
-	.long	errno@GOTTPOFF
-.Lexit:
-	mov.l	r2, @r0
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	#-1, r0
-	cfi_endproc
-
-	.align	2
-.Lmax:
-	.long	SEM_VALUE_MAX
-.Lgot3:
-	.long	_GLOBAL_OFFSET_TABLE_
-	.size	__new_sem_post,.-__new_sem_post
-	versioned_symbol(libpthread, __new_sem_post, sem_post, GLIBC_2_1)
diff --git a/sysdeps/unix/sysv/linux/sh/sem_timedwait.S b/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
deleted file mode 100644
index 4803d03..0000000
--- a/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
+++ /dev/null
@@ -1,281 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <pthread-errnos.h>
-#include <tcb-offsets.h>
-#include <structsem.h>
-#include <lowlevellock.h>
-#include "lowlevel-atomic.h"
-
-
-#if VALUE != 0
-# error "code needs to be rewritten for VALUE != 0"
-#endif
-
-	.text
-
-	.globl	sem_timedwait
-	.type	sem_timedwait,@function
-	.align	5
-	cfi_startproc
-sem_timedwait:
-.LSTARTCODE:
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
-#endif
-	mov.l	@r4, r0
-2:
-	tst	r0, r0
-	bt	1f
-	mov	r0, r3
-	mov	r0, r6
-	add	#-1, r3
-	CMPXCHG (r6, @r4, r3, r2)
-	bf/s	2b
-	 mov	r2, r0
-	rts
-	 mov	#0, r0
-
-1:
-	/* Check whether the timeout value is valid.  */
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	mov.l	r9, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r9, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	add	#-8, r15
-	cfi_adjust_cfa_offset (8)
-
-	mov	r4, r8
-	mov	r5, r9
-
-	/* Check for invalid nanosecond field.  */
-	mov.l	@(4,r9), r0
-	mov.l	.L1g, r1
-	cmp/hs	r1, r0
-	bt/s	.Lerrno_exit
-	 mov	#EINVAL, r10
-	INC (@(NWAITERS,r8),r2)
-
-7:
-	/* Compute relative timeout.  */
-	mov	r15, r4
-	mov	#0, r5
-	mov	#__NR_gettimeofday, r3
-	trapa	#0x12
-	SYSCALL_INST_PAD
-
-	mov.l	@(4,r15), r0
-	mov.w	.L1k, r1
-	dmulu.l	r0, r1		/* Milli seconds to nano seconds.  */
-	mov.l	@r9, r2
-	mov.l	@(4,r9), r3
-	mov.l	@r15, r0
-	sts	macl, r1
-	sub	r0, r2
-	clrt
-	subc	r1, r3
-	bf	5f
-	mov.l	.L1g, r1
-	add	r1, r3
-	add	#-1, r2
-5:
-	cmp/pz	r2
-	bf/s	6f		/* Time is already up.  */
-	 mov	#ETIMEDOUT, r0
-
-	/* Store relative timeout.  */
-	mov.l	r2, @r15
-	mov.l	r3, @(4,r15)
-
-.LcleanupSTART:
-	mov.l	.Lenable0, r1
-	bsrf	r1
-	 nop
-.Lenable0b:
-	mov	r0, r10
-
-	mov	r8, r4
-#if FUTEX_WAIT == 0
-	mov.l	@(PRIVATE,r8), r5
-#else
-	mov.l	@(PRIVATE,r8), r5
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-#endif
-	mov	#0, r6
-	mov	r15, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	mov.l	.Ldisable0, r1
-	mov	r10, r4
-	bsrf	r1
-	 mov	r0, r10
-.Ldisable0b:
-	mov	r10, r0
-.LcleanupEND:
-
-	tst	r0, r0
-	bt	9f
-	cmp/eq	#-EWOULDBLOCK, r0
-	bf	3f
-9:
-	mov.l	@r8, r0
-8:
-	tst	r0, r0
-	bt	7b
-
-	mov	r0, r3
-	mov	r0, r4
-	add	#-1, r3
-	CMPXCHG (r4, @r8, r3, r2)
-	bf/s	8b
-	 mov	r2, r0
-
-	DEC (@(NWAITERS,r8), r2)
-	mov	#0, r0
-
-10:
-	cfi_remember_state
-	add	#8, r15
-	cfi_adjust_cfa_offset (-8)
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	mov.l	@r15+, r9
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r9)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	rts
-	 nop
-	cfi_restore_state
-
-3:
-	neg	r0, r0
-6:
-	mov	r0, r10
-	DEC (@(NWAITERS,r8), r2)
-.Lerrno_exit:
-	mova	.Lgot2, r0
-	mov.l	.Lgot2, r12
-	add	r0, r12
-
-	mov.l	.Lerrno2, r0
-	stc	gbr, r1
-	mov.l	@(r0, r12), r0
-	bra	.Lexit
-	 add	r1, r0
-	.align	2
-.Lerrno2:
-	.long	errno@GOTTPOFF
-.Lexit:
-	mov.l	r10, @r0
-	bra	10b
-	 mov	#-1, r0
-
-.L1k:
-	.word	1000
-	.align	2
-.L1g:
-	.long	1000000000
-.Lgot2:
-	.long	_GLOBAL_OFFSET_TABLE_
-.Lenable0:
-	.long	__pthread_enable_asynccancel-.Lenable0b
-.Ldisable0:
-	.long	__pthread_disable_asynccancel-.Ldisable0b
-	.size	sem_timedwait,.-sem_timedwait
-
-	.type	sem_wait_cleanup,@function
-sem_wait_cleanup:
-	DEC (@(NWAITERS,r8), r2)
-.LcallUR:
-	mov.l	.Lresume, r1
-#ifdef PIC
-	add	r12, r1
-#endif
-	jsr	@r1
-	 nop
-	sleep
-
-	.align	2
-.Lresume:
-#ifdef PIC
-	.long	_Unwind_Resume@GOTOFF
-#else
-	.long	_Unwind_Resume
-#endif
-.LENDCODE:
-	cfi_endproc
-	.size	sem_wait_cleanup,.-sem_wait_cleanup
-
-
-	.section .gcc_except_table,"a",@progbits
-.LexceptSTART:
-	.byte	DW_EH_PE_omit			! @LPStart format (omit)
-	.byte	DW_EH_PE_omit			! @TType format (omit)
-	.byte	DW_EH_PE_uleb128		! call-site format
-	.uleb128 .Lcstend-.Lcstbegin
-.Lcstbegin:
-	.uleb128 .LcleanupSTART-.LSTARTCODE
-	.uleb128 .LcleanupEND-.LcleanupSTART
-	.uleb128 sem_wait_cleanup-.LSTARTCODE
-	.uleb128  0
-	.uleb128 .LcallUR-.LSTARTCODE
-	.uleb128 .LENDCODE-.LcallUR
-	.uleb128 0
-	.uleb128  0
-.Lcstend:
-
-#ifdef SHARED
-	.hidden	DW.ref.__gcc_personality_v0
-	.weak	DW.ref.__gcc_personality_v0
-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
-	.align	4
-	.type	DW.ref.__gcc_personality_v0, @object
-	.size	DW.ref.__gcc_personality_v0, 4
-DW.ref.__gcc_personality_v0:
-	.long	__gcc_personality_v0
-#endif
diff --git a/sysdeps/unix/sysv/linux/sh/sem_trywait.S b/sysdeps/unix/sysv/linux/sh/sem_trywait.S
deleted file mode 100644
index 8ff8792..0000000
--- a/sysdeps/unix/sysv/linux/sh/sem_trywait.S
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <pthread-errnos.h>
-#include <lowlevellock.h>
-#include "lowlevel-atomic.h"
-
-
-	.text
-
-	.globl	__new_sem_trywait
-	.type	__new_sem_trywait,@function
-	.align	5
-	cfi_startproc
-__new_sem_trywait:
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-	mov	r4, r8
-	mov.l	@r8, r0
-2:
-	tst	r0, r0
-	bt	1f
-
-	mov	r0, r3
-	mov	r0, r4
-	add	#-1, r3
-	CMPXCHG (r4, @r8, r3, r2)
-	bf/s	2b
-	 mov	r2, r0
-
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	#0, r0
-	cfi_restore_state
-
-1:
-	mov	#EAGAIN, r8
-	mova	.Lgot1, r0
-	mov.l	.Lgot1, r12
-	add	r0, r12
-
-	mov.l	.Lerrno1, r0
-	stc	gbr, r1
-	mov.l	@(r0, r12), r0
-	bra	.Lexit
-	 add	r1, r0
-	.align	2
-.Lerrno1:
-	.long	errno@GOTTPOFF
-.Lexit:
-	mov.l	r8, @r0
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r8
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r8)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	rts
-	 mov	#-1, r0
-
-	cfi_endproc
-
-	.align	2
-.Lgot1:
-	.long	_GLOBAL_OFFSET_TABLE_
-	.size	__new_sem_trywait,.-__new_sem_trywait
-	versioned_symbol(libpthread, __new_sem_trywait, sem_trywait, GLIBC_2_1)
diff --git a/sysdeps/unix/sysv/linux/sh/sem_wait.S b/sysdeps/unix/sysv/linux/sh/sem_wait.S
deleted file mode 100644
index 04a6a40..0000000
--- a/sysdeps/unix/sysv/linux/sh/sem_wait.S
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Copyright (C) 2003-2014 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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-#include <shlib-compat.h>
-#include <pthread-errnos.h>
-#include <tcb-offsets.h>
-#include <structsem.h>
-#include <lowlevellock.h>
-#include "lowlevel-atomic.h"
-
-
-#if VALUE != 0
-# error "code needs to be rewritten for VALUE != 0"
-#endif
-
-	.text
-
-	.globl	__new_sem_wait
-	.type	__new_sem_wait,@function
-	.align	5
-	cfi_startproc
-__new_sem_wait:
-.LSTARTCODE:
-#ifdef SHARED
-	cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
-			DW.ref.__gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
-#else
-	cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
-	cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
-#endif
-	mov.l	r8, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r8, 0)
-	mov.l	r10, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r10, 0)
-	mov.l	r12, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (r12, 0)
-	sts.l	pr, @-r15
-	cfi_adjust_cfa_offset (4)
-	cfi_rel_offset (pr, 0)
-
-	mov	r4, r8
-	mov.l	@r8, r0
-2:
-	tst	r0, r0
-	bt	1f
-	mov	r0, r3
-	mov	r0, r4
-	add	#-1, r3
-	CMPXCHG (r4, @r8, r3, r2)
-	bf/s	2b
-	 mov	r2, r0
-7:
-	mov	#0, r0
-9:
-	cfi_remember_state
-	lds.l	@r15+, pr
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (pr)
-	mov.l	@r15+, r12
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r12)
-	mov.l	@r15+, r10
-	cfi_adjust_cfa_offset (-4)
-	cfi_restore (r10)
-	rts
-	 mov.l	@r15+, r8
-	/* Omit CFI for restore in delay slot.  */
-	cfi_restore_state
-
-.Lafter_ret:
-1:
-	INC (@(NWAITERS,r8),r2)
-
-.LcleanupSTART:
-6:
-	mov.l	.Lenable0, r1
-	bsrf	r1
-	 nop
-.Lenable0b:
-	mov	r0, r10
-
-	mov	r8, r4
-#if FUTEX_WAIT == 0
-	mov.l	@(PRIVATE,r8), r5
-#else
-	mov.l	@(PRIVATE,r8), r5
-	mov	#FUTEX_WAIT, r0
-	or	r0, r5
-#endif
-	mov	#0, r6
-	mov	#0, r7
-	mov	#SYS_futex, r3
-	extu.b	r3, r3
-	trapa	#0x14
-	SYSCALL_INST_PAD
-
-	mov.l	.Ldisable0, r1
-	mov	r10, r4
-	bsrf	r1
-	 mov	r0, r10
-.Ldisable0b:
-	mov	r10, r0
-.LcleanupEND:
-
-	tst	r0, r0
-	bt	3f
-	cmp/eq	#-EWOULDBLOCK, r0
-	bf	4f
-
-3:
-	mov.l	@r8, r0
-5:
-	tst	r0, r0
-	bt	6b
-
-	mov	r0, r3
-	mov	r0, r4
-	add	#-1, r3
-	CMPXCHG (r4, @r8, r3, r2)
-	bf/s	5b
-	 mov	r2, r0
-
-	DEC (@(NWAITERS,r8), r2)
-	bra	7b
-	 nop
-
-4:
-	neg	r0, r0
-	mov	r0, r4
-	DEC (@(NWAITERS,r8), r2)
-	mov	r4, r8
-	mova	.Lgot0, r0
-	mov.l	.Lgot0, r12
-	add	r0, r12
-
-	mov.l	.Lerrno0, r0
-	stc	gbr, r1
-	mov.l	@(r0, r12), r0
-	bra	.Lexit
-	 add	r1, r0
-	.align	2
-.Lerrno0:
-	.long	errno@GOTTPOFF
-.Lexit:
-	mov.l	r8, @r0
-	bra	9b
-	 mov	#-1, r0
-
-	.align	2
-.Lgot0:
-	.long	_GLOBAL_OFFSET_TABLE_
-.Lenable0:
-	.long	__pthread_enable_asynccancel-.Lenable0b
-.Ldisable0:
-	.long	__pthread_disable_asynccancel-.Ldisable0b
-	.size	__new_sem_wait,.-__new_sem_wait
-	versioned_symbol(libpthread, __new_sem_wait, sem_wait, GLIBC_2_1)
-
-
-	.type	sem_wait_cleanup,@function
-sem_wait_cleanup:
-	DEC (@(NWAITERS,r8), r2)
-.LcallUR:
-	mov.l	.Lresume, r1
-#ifdef PIC
-	add	r12, r1
-#endif
-	jsr	@r1
-	 nop
-	sleep
-
-	.align	2
-.Lresume:
-#ifdef PIC
-	.long	_Unwind_Resume@GOTOFF
-#else
-	.long	_Unwind_Resume
-#endif
-.LENDCODE:
-	cfi_endproc
-	.size	sem_wait_cleanup,.-sem_wait_cleanup
-
-
-	.section .gcc_except_table,"a",@progbits
-.LexceptSTART:
-	.byte	DW_EH_PE_omit			! @LPStart format (omit)
-	.byte	DW_EH_PE_omit			! @TType format (omit)
-	.byte	DW_EH_PE_uleb128		! call-site format
-	.uleb128 .Lcstend-.Lcstbegin
-.Lcstbegin:
-	.uleb128 .LcleanupSTART-.LSTARTCODE
-	.uleb128 .LcleanupEND-.LcleanupSTART
-	.uleb128 sem_wait_cleanup-.LSTARTCODE
-	.uleb128  0
-	.uleb128 .LcallUR-.LSTARTCODE
-	.uleb128 .LENDCODE-.LcallUR
-	.uleb128 0
-	.uleb128  0
-.Lcstend:
-
-#ifdef SHARED
-	.hidden	DW.ref.__gcc_personality_v0
-	.weak	DW.ref.__gcc_personality_v0
-	.section .gnu.linkonce.d.DW.ref.__gcc_personality_v0,"aw",@progbits
-	.align	4
-	.type	DW.ref.__gcc_personality_v0, @object
-	.size	DW.ref.__gcc_personality_v0, 4
-DW.ref.__gcc_personality_v0:
-	.long	__gcc_personality_v0
-#endif
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h b/sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h
deleted file mode 100644
index 90be7bd..0000000
--- a/sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/*  4 instruction cycles not accessing cache and TLB are needed after
-    trapa instruction to avoid an SH-4 silicon bug.  */
-#define NEED_SYSCALL_INST_PAD
-#include_next <lowlevellock.h>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   48 ++
 sysdeps/unix/sysv/linux/i386/lowlevellock-futex.h  |  137 ++++
 sysdeps/unix/sysv/linux/i386/lowlevellock.h        |  130 +---
 sysdeps/unix/sysv/linux/lowlevellock-futex.h       |    5 +-
 sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S     |   18 -
 sysdeps/unix/sysv/linux/sh/lowlevellock.S          |  574 ---------------
 sysdeps/unix/sysv/linux/sh/lowlevellock.h          |  382 ----------
 sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S    |  278 -------
 sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S  |  239 ------
 .../unix/sysv/linux/sh/pthread_cond_broadcast.S    |  292 --------
 sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S   |  201 -----
 .../unix/sysv/linux/sh/pthread_cond_timedwait.S    |  769 --------------------
 sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S     |  687 -----------------
 sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S |  270 -------
 .../sysv/linux/sh/pthread_rwlock_timedrdlock.S     |  339 ---------
 .../sysv/linux/sh/pthread_rwlock_timedwrlock.S     |  323 --------
 sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S |  221 ------
 sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S |  252 -------
 sysdeps/unix/sysv/linux/sh/sem_post.S              |  111 ---
 sysdeps/unix/sysv/linux/sh/sem_timedwait.S         |  281 -------
 sysdeps/unix/sysv/linux/sh/sem_trywait.S           |  102 ---
 sysdeps/unix/sysv/linux/sh/sem_wait.S              |  229 ------
 sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h      |    4 -
 sysdeps/unix/sysv/linux/x86_64/lowlevellock.h      |  139 +---
 24 files changed, 229 insertions(+), 5802 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/i386/lowlevellock-futex.h
 delete mode 100644 sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/lowlevellock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/lowlevellock.h
 delete mode 100644 sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/sem_post.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/sem_timedwait.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/sem_trywait.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/sem_wait.S
 delete mode 100644 sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]