[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