[Pkg-openmpi-commits] r159 - in /openmpi/trunk/debian/patches: mips-support series

manuel at users.alioth.debian.org manuel at users.alioth.debian.org
Wed Jan 28 16:40:02 UTC 2009


Author: manuel
Date: Wed Jan 28 16:40:01 2009
New Revision: 159

URL: http://svn.debian.org/wsvn/pkg-openmpi/?sc=1&rev=159
Log:
Added patch for MIPS support

Added:
    openmpi/trunk/debian/patches/mips-support
Modified:
    openmpi/trunk/debian/patches/series

Added: openmpi/trunk/debian/patches/mips-support
URL: http://svn.debian.org/wsvn/pkg-openmpi/openmpi/trunk/debian/patches/mips-support?rev=159&op=file
==============================================================================
--- openmpi/trunk/debian/patches/mips-support (added)
+++ openmpi/trunk/debian/patches/mips-support Wed Jan 28 16:40:01 2009
@@ -1,0 +1,223 @@
+--- a/opal/asm/asm-data.txt
++++ b/opal/asm/asm-data.txt
+@@ -127,3 +127,7 @@
+ 
+ MIPS	default-.text-.globl-:--L--1-1-1-1-0	mips-irix
+ MIPS	default-.text-.globl-:--L--1-1-1-1-0	mips64el
++MIPS	default-.text-.globl-:--L- at -1-1-1-1-1	mips64-linux
++
++# However, this doesn't hold true for 32-bit MIPS as used on Linux.
++MIPS	default-.text-.globl-:--L- at -1-1-1-0-1	mips-linux
+--- a/opal/asm/base/MIPS.asm
++++ b/opal/asm/base/MIPS.asm
+@@ -1,26 +1,48 @@
+ START_FILE
+ 
++#ifdef __linux__
+ #include <sys/asm.h>
++#else
++#include <asm.h>
++#endif
+ #include <regdef.h>
+ 	
+ 	TEXT
+ 
+ 	ALIGN(8)
+ LEAF(opal_atomic_mb)
+-	sync
++#ifdef __linux__
++	.set mips2
++#endif
++	sync
++#ifdef __linux__
++	.set mips0
++#endif
+ 	j	ra
+ END(opal_atomic_mb)
+ 
+ 	
+ 	ALIGN(8)
+ LEAF(opal_atomic_rmb)
+-	sync
++#ifdef __linux__
++	.set mips2
++#endif
++	sync
++#ifdef __linux__
++	.set mips0
++#endif
+ 	j	ra
+ END(opal_atomic_rmb)
+ 	
+ 	
+ LEAF(opal_atomic_wmb)
+-	sync
++#ifdef __linux__
++	.set mips2
++#endif
++	sync
++#ifdef __linux__
++	.set mips0
++#endif
+ 	j	ra
+ END(opal_atomic_wmb)
+ 
+@@ -28,7 +50,13 @@
+ LEAF(opal_atomic_cmpset_32)
+ 	.set noreorder        
+ retry1:                
++#ifdef __linux__
++	.set mips2
++#endif
+ 	ll     $3, 0($4)         
++#ifdef __linux__
++	.set mips0
++#endif
+ 	bne    $3, $5, done1   
+ 	or     $2, $6, 0      
+ 	sc     $2, 0($4)         
+@@ -45,13 +73,31 @@
+ LEAF(opal_atomic_cmpset_acq_32)
+ 	.set noreorder        
+ retry2:                
++#ifdef __linux__
++	.set mips2
++#endif
+ 	ll     $3, 0($4)         
++#ifdef __linux__
++	.set mips0
++#endif
+ 	bne    $3, $5, done2   
+ 	or     $2, $6, 0      
++#ifdef __linux__
++	.set mips2
++#endif
+ 	sc     $2, 0($4)         
++#ifdef __linux__
++	.set mips0
++#endif
+ 	bne    $2, 1, retry2   
+ done2:                 
+-	sync
++#ifdef __linux__
++	.set mips2
++#endif
++	sync
++#ifdef __linux__
++	.set mips0
++#endif
+ 	.set reorder          
+ 
+ 	xor	$3,$3,$5
+@@ -62,12 +108,30 @@
+ 	
+ LEAF(opal_atomic_cmpset_rel_32)
+ 	.set noreorder        
+-	sync
++#ifdef __linux__
++	.set mips2
++#endif
++	sync
++#ifdef __linux__
++	.set mips0
++#endif
+ retry3:                
++#ifdef __linux__
++	.set mips2
++#endif
+ 	ll     $3, 0($4)         
++#ifdef __linux__
++	.set mips0
++#endif
+ 	bne    $3, $5, done3   
+ 	or     $2, $6, 0      
++#ifdef __linux__
++	.set mips2
++#endif
+ 	sc     $2, 0($4)         
++#ifdef __linux__
++	.set mips0
++#endif
+ 	bne    $2, 1, retry3   
+ done3:                 
+ 	.set reorder          
+@@ -77,7 +141,7 @@
+ 	sltu	$2,$3,1
+ END(opal_atomic_cmpset_rel_32)
+ 	
+-	
++#ifdef __mips64
+ LEAF(opal_atomic_cmpset_64)
+ 		.set noreorder        
+ retry4:                
+@@ -128,3 +192,4 @@
+ 	j	ra
+ 	sltu	$3,$4,1
+ END(opal_atomic_cmpset_rel_64)
++#endif /* __mips64 */
+--- a/opal/include/opal/sys/mips/atomic.h
++++ b/opal/include/opal/sys/mips/atomic.h
+@@ -23,10 +23,17 @@
+ #if OMPI_WANT_SMP_LOCKS
+ 
+ /* BWB - FIX ME! */
++#ifdef __linux__
++#define MB() __asm__ __volatile__(".set mips2; sync; .set mips0": : :"memory")
++#define RMB() __asm__ __volatile__(".set mips2; sync; .set mips0": : :"memory")
++#define WMB() __asm__ __volatile__(".set mips2; sync; .set mips0": : :"memory")
++#define SMP_SYNC ".set mips2; sync; .set mips0"
++#else
+ #define MB() __asm__ __volatile__("sync": : :"memory")
+ #define RMB() __asm__ __volatile__("sync": : :"memory")
+ #define WMB() __asm__ __volatile__("sync": : :"memory")
+ #define SMP_SYNC "sync"
++#endif
+ 
+ #else
+ 
+@@ -46,8 +53,10 @@
+ #define OPAL_HAVE_ATOMIC_MEM_BARRIER 1
+ 
+ #define OPAL_HAVE_ATOMIC_CMPSET_32 1
+-#define OPAL_HAVE_ATOMIC_CMPSET_64 1
+ 
++#ifdef __mips64
++#define OPAL_HAVE_ATOMIC_CMPSET_64 1
++#endif
+ 
+ /**********************************************************************
+  *
+@@ -94,10 +103,16 @@
+    __asm__ __volatile__ ("\t"
+                          ".set noreorder        \n"
+                          "1:                \n\t"
++#ifdef __linux__
++                         ".set mips2         \n\t"
++#endif
+                          "ll     %0, %2         \n\t" /* load *addr into ret */
+                          "bne    %0, %3, 2f   \n\t" /* done if oldval != ret */
+                          "or     %5, %4, 0      \n\t" /* ret = newval */
+                          "sc     %5, %2         \n\t" /* store ret in *addr */
++#ifdef __linux__
++                         ".set mips0         \n\t"
++#endif
+                          /* note: ret will be 0 if failed, 1 if succeeded */
+ 			 "bne    %5, 1, 1b   \n\t"
+                          "2:                 \n\t"
+@@ -133,7 +148,7 @@
+     return opal_atomic_cmpset_32(addr, oldval, newval);
+ }
+ 
+-
++#ifdef OPAL_HAVE_ATOMIC_CMPSET_64
+ static inline int opal_atomic_cmpset_64(volatile int64_t *addr,
+                                         int64_t oldval, int64_t newval)
+ {
+@@ -183,6 +198,7 @@
+     opal_atomic_wmb();
+     return opal_atomic_cmpset_64(addr, oldval, newval);
+ }
++#endif /* OPAL_HAVE_ATOMIC_CMPSET_64 */
+ 
+ #endif /* OMPI_GCC_INLINE_ASSEMBLY */
+ 

Modified: openmpi/trunk/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-openmpi/openmpi/trunk/debian/patches/series?rev=159&op=diff
==============================================================================
--- openmpi/trunk/debian/patches/series (original)
+++ openmpi/trunk/debian/patches/series Wed Jan 28 16:40:01 2009
@@ -1,2 +1,4 @@
 # Backport of SVN changesets 20317 and 20318. Will be in 1.3.1.
 vampirtrace
+# Updated patch by Thiemo Seufer. Hopefully this will resolve #489173.
+mips-support




More information about the Pkg-openmpi-commits mailing list