| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | From 45064565100b67ff2f960e93d580449b720a66c9 Mon Sep 17 00:00:00 2001From: Waldemar Brodkorb <wbx@openadk.org>Date: Sat, 6 Sep 2014 01:52:10 +0200Subject: [PATCH] fix linuxthreads for coldfire nommuSigned-off-by: Waldemar Brodkorb <wbx@openadk.org>--- libpthread/linuxthreads/sysdeps/m68k/pspinlock.c     | 20 +++++++++++++++----- libpthread/linuxthreads/sysdeps/m68k/pt-machine.h    | 11 +++++++++-- libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c |  2 ++ 3 files changed, 26 insertions(+), 7 deletions(-)diff --git a/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c b/libpthread/linuxthreads/sysdeps/m68k/pspinlock.cindex c26a278..af77c2a 100644--- a/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c+++ b/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c@@ -27,10 +27,15 @@ __pthread_spin_lock (pthread_spinlock_t *lock)   unsigned int val;    do-    __asm__ __volatile__ ("tas %1; sne %0"-		  : "=dm" (val), "=m" (*lock)-		  : "m" (*lock)-		  : "cc");+    __asm__ __volatile__ (+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__m68000)+		"tas %1; sne %0"+#else+		"bset #7,%1; sne %0"+#endif+		: "=dm" (val), "=m" (*lock)+		: "m" (*lock)+		: "cc");   while (val);    return 0;@@ -43,7 +48,12 @@ __pthread_spin_trylock (pthread_spinlock_t *lock) {   unsigned int val; -  __asm__ __volatile__ ("tas %1; sne %0"+  __asm__ __volatile__ (+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__m68000)+		"tas %1; sne %0"+#else+		"bset #7,%1; sne %0"+#endif 		: "=dm" (val), "=m" (*lock) 		: "m" (*lock) 		: "cc");diff --git a/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h b/libpthread/linuxthreads/sysdeps/m68k/pt-machine.hindex e2d7bdc..1eb9fd5 100644--- a/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h+++ b/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h@@ -28,12 +28,18 @@ #endif  /* Spinlock implementation; required.  */+PT_EI long int testandset (int *spinlock); PT_EI long int testandset (int *spinlock) {   char ret; -  __asm__ __volatile__("tas %1; sne %0"+  __asm__ __volatile__(+#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__m68000)+	"tas %1; sne %0"+#else+	"bset #7,%1; sne %0"+#endif        : "=dm"(ret), "=m"(*spinlock)        : "m"(*spinlock)        : "cc");@@ -50,6 +56,7 @@ register char * stack_pointer __asm__ ("%sp");  /* Compare-and-swap for semaphores. */ +#if !defined(__mcoldfire__) && !defined(__mcf5200__) && !defined(__mc68000) #define HAS_COMPARE_AND_SWAP PT_EI int __compare_and_swap (long int *p, long int oldval, long int newval)@@ -63,5 +70,5 @@ __compare_and_swap (long int *p, long int oldval, long int newval)    return ret; }-+#endif #endif /* pt-machine.h */diff --git a/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c b/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.cindex 706faef..634c752 100644--- a/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c+++ b/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c@@ -16,7 +16,9 @@    <http://www.gnu.org/licenses/>.  */  #include <netdb.h>+#ifdef __UCLIBC_HAS_TLS__ #include <tls.h>+#endif #include <linuxthreads/internals.h> #include <sysdep-cancel.h> -- 2.0.1
 |