From 8b7c55bf64f4c03ed878f1dd386b27f613fc8b90 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Wed, 19 Dec 2007 08:36:59 +0000 Subject: [PATCH] Update libatomic patch and makefile SVN-Revision: 9803 --- libs/libatomicops/Makefile | 9 +- libs/libatomicops/patches/001-mips.patch | 130 ++++++++++------------- 2 files changed, 63 insertions(+), 76 deletions(-) diff --git a/libs/libatomicops/Makefile b/libs/libatomicops/Makefile index e1b9d63bcb..8f2098806a 100644 --- a/libs/libatomicops/Makefile +++ b/libs/libatomicops/Makefile @@ -49,16 +49,17 @@ define Build/Compile endef define Build/InstallDev - mkdir -p $(1)/usr/include/atomicops/ - $(CP) $(PKG_INSTALL_DIR)/usr/include/atomic_ops{,_malloc,_stack}.h $(1)/usr/include/atomicops/ + mkdir -p $(1)/usr/include/ + $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ mkdir -p $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/libatomic_ops*.a $(1)/usr/lib/ endef define Build/UninstallDev rm -rf \ - $(STAGING_DIR)/usr/include/libatomicops \ - $(STAGING_DIR)/usr/lib/libatomic_ops*.a + $(STAGING_DIR)/usr/include/atomic_ops{,_malloc,_stack}.h \ + $(STAGING_DIR)/usr/include/atomic_ops \ + $(STAGING_DIR)/usr/lib/libatomic_ops{,_gpl}.a endef $(eval $(call BuildPackage,libatomicops)) diff --git a/libs/libatomicops/patches/001-mips.patch b/libs/libatomicops/patches/001-mips.patch index 7275ec5e64..79188ce435 100644 --- a/libs/libatomicops/patches/001-mips.patch +++ b/libs/libatomicops/patches/001-mips.patch @@ -1,61 +1,38 @@ -From ths@networkno.de Thu Oct 27 15:44:14 2005 -Received: (at submit) by bugs.debian.org; 27 Oct 2005 22:44:14 +0000 -Return-path: -Received: from mx02.qsc.de [213.148.130.14] - by spohr.debian.org with esmtp (Exim 3.36 1 (Debian)) - id 1EVGTm-0002nQ-00; Thu, 27 Oct 2005 15:44:14 -0700 -Received: from port-195-158-169-21.dynamic.qsc.de ([195.158.169.21] helo=hattusa.textio) - by mx02.qsc.de with esmtp (Exim 3.35 #1) - id 1EVGTH-00020N-00 - for submit@bugs.debian.org; Fri, 28 Oct 2005 00:43:43 +0200 -Received: from ths by hattusa.textio with local (Exim 4.54) - id 1EVGTG-000263-9P - for submit@bugs.debian.org; Fri, 28 Oct 2005 00:43:42 +0200 -Date: Fri, 28 Oct 2005 00:43:42 +0200 -To: submit@bugs.debian.org -Subject: [mips/mipsel] FTBFS due to missing arch-specific implementation -Message-ID: <20051027224341.GX5721@hattusa.textio> -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -User-Agent: Mutt/1.5.11 -From: Thiemo Seufer -Delivered-To: submit@bugs.debian.org -X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02 - (1.212-2003-09-23-exp) on spohr.debian.org -X-Spam-Level: -X-Spam-Status: No, hits=-8.0 required=4.0 tests=BAYES_00,HAS_PACKAGE - autolearn=no version=2.60-bugs.debian.org_2005_01_02 - -Package: libatomic-ops -Version: 1.0-3 -Tags: patch - -Libatomic-ops currently FTBFS on mips/mipsel because there is no -arch-specific implementation, and the generic pthread isn't configured. - -The appended patch adds a basic implementation for linux. - - -Thiemo - - ---- libatomic-ops-1.0.away/src/atomic_ops/sysdeps/Makefile.am 2005-08-03 02:05:18.000000000 +0200 -+++ libatomic-ops-1.0/src/atomic_ops/sysdeps/Makefile.am 2005-10-27 20:59:59.000000000 +0200 -@@ -26,7 +26,7 @@ nobase_sysdep_HEADERS= generic_pthread.h - gcc/alpha.h gcc/arm.h gcc/x86.h \ - gcc/hppa.h gcc/ia64.h \ +diff --git a/src/atomic_ops.h b/src/atomic_ops.h +index c23f30b..791b360 100755 +--- a/src/atomic_ops.h ++++ b/src/atomic_ops.h +@@ -220,6 +220,9 @@ + # if defined(__cris__) || defined(CRIS) + # include "atomic_ops/sysdeps/gcc/cris.h" + # endif ++# if defined(__mips__) ++# include "atomic_ops/sysdeps/gcc/mips.h" ++# endif + #endif /* __GNUC__ && !AO_USE_PTHREAD_DEFS */ + + #if defined(__INTEL_COMPILER) && !defined(AO_USE_PTHREAD_DEFS) +diff --git a/src/atomic_ops/sysdeps/Makefile.am b/src/atomic_ops/sysdeps/Makefile.am +index 74122b4..d6737c0 100644 +--- a/src/atomic_ops/sysdeps/Makefile.am ++++ b/src/atomic_ops/sysdeps/Makefile.am +@@ -29,6 +29,7 @@ nobase_sysdep_HEADERS= generic_pthread.h \ gcc/powerpc.h gcc/sparc.h \ -- gcc/hppa.h gcc/m68k.h gcc/s390.h \ -+ gcc/hppa.h gcc/m68k.h gcc/mips.h gcc/s390.h \ + gcc/hppa.h gcc/m68k.h gcc/s390.h \ gcc/ia64.h gcc/x86_64.h gcc/cris.h \ ++ gcc/mips.h \ \ icc/ia64.h \ ---- libatomic-ops-1.0.away/src/atomic_ops/sysdeps/gcc/mips.h 1970-01-01 01:00:00.000000000 +0100 -+++ libatomic-ops-1.0/src/atomic_ops/sysdeps/gcc/mips.h 2005-10-28 00:11:19.000000000 +0200 -@@ -0,0 +1,65 @@ + \ +diff --git a/src/atomic_ops/sysdeps/gcc/mips.h b/src/atomic_ops/sysdeps/gcc/mips.h +new file mode 100644 +index 0000000..e7f3a5d +--- /dev/null ++++ b/src/atomic_ops/sysdeps/gcc/mips.h +@@ -0,0 +1,89 @@ +/* + * Copyright (c) 2005 Thiemo Seufer ++ * Copyright (c) 2007 Zhang Le + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. @@ -78,7 +55,7 @@ Thiemo +{ + __asm__ __volatile__( + " .set push \n" -+ " .set mips2 \n" ++ " .set mips3 \n" + " .set noreorder \n" + " .set nomacro \n" + " sync \n" @@ -96,16 +73,16 @@ Thiemo + + __asm__ __volatile__( + " .set push \n" -+ " .set mips2 \n" ++ " .set mips3 \n" + " .set noreorder \n" + " .set nomacro \n" + "1: ll %0, %1 \n" + " bne %0, %4, 2f \n" -+ " move %0, %3 \n" ++ " move %0, %3 \n" + " sc %0, %1 \n" + " .set pop \n" + " beqz %0, 1b \n" -+ " li %2, 1 \n" ++ " li %2, 1 \n" + "2: " + : "=&r" (temp), "+R" (*addr), "+r" (was_equal) + : "r" (new_val), "r" (old) @@ -115,21 +92,30 @@ Thiemo + +#define AO_HAVE_compare_and_swap + ++AO_INLINE AO_t ++AO_fetch_and_add_full (volatile AO_t *p, AO_t incr) ++{ ++ AO_t result, temp; ++ __asm__ __volatile__( ++ " .set push \n" ++ " .set mips3 \n" ++ " .set noreorder \n" ++ " .set nomacro \n" ++ "1: ll %1, %2 \n" ++ " addu %0, %1, %3 \n" ++ " sc %0, %2 \n" ++ " beqz %0, 1b \n" ++ " addu %0, %1, %3 \n" ++ " sync \n" ++ " .set pop \n" ++ : "=&r" (result), "=&r" (temp), "=m" (*p) ++ : "r" (incr), "m" (*p) ++ : "memory"); ++ return result; ++} ++ ++#define AO_HAVE_fetch_and_add_full ++ +/* -+ * FIXME: We should also implement fetch_and_add and or primitives -+ * directly. ++ * FIXME: fetch_and_add_full implemented, any others? + */ ---- libatomic-ops-1.0.away/src/atomic_ops.h 2005-08-03 02:05:18.000000000 +0200 -+++ libatomic-ops-1.0/src/atomic_ops.h 2005-10-27 21:01:29.000000000 +0200 -@@ -219,6 +219,9 @@ - # if defined(__cris__) || defined(CRIS) - # include "atomic_ops/sysdeps/gcc/cris.h" - # endif -+# if defined(__mips__) -+# include "atomic_ops/sysdeps/gcc/mips.h" -+# endif /* __mips__ */ - #endif /* __GNUC__ && !AO_USE_PTHREAD_DEFS */ - - #if defined(__INTEL_COMPILER) && !defined(AO_USE_PTHREAD_DEFS) - - -- 2.30.2