diff --git a/SOURCES/openmpi-1.6.4-aarch64.patch b/SOURCES/openmpi-1.6.4-aarch64.patch
new file mode 100644
index 0000000..f9ccbbb
--- /dev/null
+++ b/SOURCES/openmpi-1.6.4-aarch64.patch
@@ -0,0 +1,657 @@
+From 351e63eeb4123aa2d2dc13a01912968ad1365fa1 Mon Sep 17 00:00:00 2001
+From: Brian Barrett <brbarret@open-mpi-git-mirror.example.com>
+Date: Wed, 23 Nov 2011 04:25:41 +0000
+Subject: [PATCH] Add (optional/last ditch effort) support for GCC/Intel
+ __sync_ builtin atomic operations.  Much easier than adding support for a new
+ architecture.
+
+---
+ LICENSE                                        |   2 +-
+ opal/config/opal_config_asm.m4                 |  38 +++++++-
+ opal/include/opal/sys/Makefile.am              |   2 +
+ opal/include/opal/sys/architecture.h           |   2 +
+ opal/include/opal/sys/atomic.h                 |   9 ++
+ opal/include/opal/sys/sync_builtin/Makefile.am |  24 +++++
+ opal/include/opal/sys/sync_builtin/atomic.h    | 116 +++++++++++++++++++++++++
+ opal/include/opal/sys/sync_builtin/timer.h     |  27 ++++++
+ 8 files changed, 217 insertions(+), 3 deletions(-)
+ create mode 100644 opal/include/opal/sys/sync_builtin/Makefile.am
+ create mode 100644 opal/include/opal/sys/sync_builtin/atomic.h
+ create mode 100644 opal/include/opal/sys/sync_builtin/timer.h
+
+diff --git a/LICENSE b/LICENSE
+index d6424ab..0712868 100644
+--- a/LICENSE
++++ b/LICENSE
+@@ -19,7 +19,7 @@ Copyright (c) 2006-2010 Los Alamos National Security, LLC.  All rights
+                         reserved. 
+ Copyright (c) 2006-2010 Cisco Systems, Inc.  All rights reserved.
+ Copyright (c) 2006-2010 Voltaire, Inc. All rights reserved.
+-Copyright (c) 2006-2010 Sandia National Laboratories. All rights reserved.
++Copyright (c) 2006-2011 Sandia National Laboratories. All rights reserved.
+ Copyright (c) 2006-2010 Sun Microsystems, Inc.  All rights reserved.
+                         Use is subject to license terms.
+ Copyright (c) 2006-2010 The University of Houston. All rights reserved.
+diff --git a/opal/config/opal_config_asm.m4 b/opal/config/opal_config_asm.m4
+index fc7fdcd..591f4c3 100644
+--- a/opal/config/opal_config_asm.m4
++++ b/opal/config/opal_config_asm.m4
+@@ -19,6 +19,17 @@ dnl $HEADER$
+ dnl
+ 
+ 
++AC_DEFUN([OPAL_CHECK_SYNC_BUILTINS], [
++  AC_MSG_CHECKING([for __sync builtin atomics])
++
++  AC_TRY_COMPILE([], [__sync_synchronize()], 
++    [AC_MSG_RESULT([yes])
++     $1],
++    [AC_MSG_RESULT([no])
++     $2])
++])
++
++
+ dnl #################################################################
+ dnl
+ dnl OMPI_CHECK_ASM_TEXT
+@@ -841,8 +852,21 @@ AC_DEFUN([OPAL_CONFIG_ASM],[
+     AC_DEFINE_UNQUOTED([OPAL_WANT_SMP_LOCKS], [$want_smp_locks],
+                        [whether we want to have smp locks in atomic ops or not])
+ 
++    AC_ARG_ENABLE([builtin-atomics],
++      [AC_HELP_STRING([--enable-builtin-atomics],
++         [Enable use of __sync builtin atomics (default: disabled)])])
++
+     if test "$ompi_cv_c_compiler_vendor" = "microsoft" ; then
+         ompi_cv_asm_arch="WINDOWS"
++    elif test "$enable_builtin_atomics" = "yes" ; then
++       OPAL_CHECK_SYNC_BUILTINS([ompi_cv_asm_arch="SYNC_BUILTIN"],
++         [AC_MSG_ERROR([__sync builtin atomics requested but not found.])])
++       AC_DEFINE([OPAL_C_GCC_INLINE_ASSEMBLY], [1],
++         [Whether C compiler supports GCC style inline assembly])
++       m4_ifdef([project_ompi],
++                [AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"],
++         [AC_DEFINE([OMPI_CXX_GCC_INLINE_ASSEMBLY], [1],
++           [Whether C++ compiler supports GCC style inline assembly])])])
+     else
+         OMPI_CHECK_ASM_PROC
+         OMPI_CHECK_ASM_TEXT
+@@ -946,10 +970,19 @@ AC_MSG_ERROR([Can not continue.])
+             ;;
+ 
+         *)
+-            AC_MSG_ERROR([No atomic primitives available for $host])
++            OPAL_CHECK_SYNC_BUILTINS([ompi_cv_asm_arch="SYNC_BUILTIN"],
++              [AC_MSG_ERROR([No atomic primitives available for $host])])
+             ;;
+         esac
+ 
++      if test "$ompi_cv_asm_arch" = "SYNC_BUILTIN" ; then
++        AC_DEFINE([OPAL_C_GCC_INLINE_ASSEMBLY], [1],
++          [Whether C compiler supports GCC style inline assembly])
++        m4_ifdef([project_ompi],
++                 [AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"],
++          [AC_DEFINE([OMPI_CXX_GCC_INLINE_ASSEMBLY], [1],
++            [Whether C++ compiler supports GCC style inline assembly])])])
++      else
+         AC_DEFINE_UNQUOTED([OPAL_ASM_SUPPORT_64BIT],
+             [$OPAL_ASM_SUPPORT_64BIT],
+             [Whether we can do 64bit assembly operations or not.  Should not be used outside of the assembly header files])
+@@ -1004,6 +1037,7 @@ AC_MSG_ERROR([Can not continue.])
+         AC_DEFINE_UNQUOTED([OPAL_ASSEMBLY_FORMAT], ["$OPAL_ASSEMBLY_FORMAT"],
+                            [Format of assembly file])
+         AC_SUBST([OPAL_ASSEMBLY_FORMAT])
++      fi # if ompi_cv_asm_arch = SYNC_BUILTIN
+     fi # if cv_c_compiler_vendor = microsoft
+ 
+     result="OMPI_$ompi_cv_asm_arch"
+@@ -1032,7 +1066,7 @@ AC_DEFUN([OMPI_ASM_FIND_FILE], [
+     AC_REQUIRE([AC_PROG_GREP])
+     AC_REQUIRE([AC_PROG_FGREP])
+ 
+-if test "$ompi_cv_asm_arch" != "WINDOWS" ; then
++if test "$ompi_cv_asm_arch" != "WINDOWS" -a "$ompi_cv_asm_arch" != "SYNC_BUILTIN" ; then
+     AC_CHECK_PROG([PERL], [perl], [perl])
+ 
+     # see if we have a pre-built one already
+diff --git a/opal/include/opal/sys/Makefile.am b/opal/include/opal/sys/Makefile.am
+index 0917c7d..6c411c5 100644
+--- a/opal/include/opal/sys/Makefile.am
++++ b/opal/include/opal/sys/Makefile.am
+@@ -10,6 +10,7 @@
+ # Copyright (c) 2004-2005 The Regents of the University of California.
+ #                         All rights reserved.
+ # Copyright (c) 2010      Cisco Systems, Inc.  All rights reserved.
++# Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
+ # $COPYRIGHT$
+ # 
+ # Additional copyrights may follow
+@@ -34,3 +35,4 @@ include opal/sys/mips/Makefile.am
+ include opal/sys/sparc/Makefile.am
+ include opal/sys/sparcv9/Makefile.am
+ include opal/sys/win32/Makefile.am
++include opal/sys/sync_builtin/Makefile.am
+diff --git a/opal/include/opal/sys/architecture.h b/opal/include/opal/sys/architecture.h
+index 2e7d007..62430fa 100644
+--- a/opal/include/opal/sys/architecture.h
++++ b/opal/include/opal/sys/architecture.h
+@@ -9,6 +9,7 @@
+  *                         University of Stuttgart.  All rights reserved.
+  * Copyright (c) 2004-2005 The Regents of the University of California.
+  *                         All rights reserved.
++ * Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
+  * $COPYRIGHT$
+  * 
+  * Additional copyrights may follow
+@@ -37,6 +38,7 @@
+ #define OMPI_SPARCV9_64     0062
+ #define OMPI_MIPS           0070
+ #define OMPI_ARM            0100
++#define OMPI_SYNC_BUILTIN   0200
+ 
+ /* Formats */
+ #define OMPI_DEFAULT        1000  /* standard for given architecture */
+diff --git a/opal/include/opal/sys/atomic.h b/opal/include/opal/sys/atomic.h
+index 01e8366..bc3c07f 100644
+--- a/opal/include/opal/sys/atomic.h
++++ b/opal/include/opal/sys/atomic.h
+@@ -10,6 +10,7 @@
+  * Copyright (c) 2004-2005 The Regents of the University of California.
+  *                         All rights reserved.
+  * Copyright (c) 2007      Sun Microsystems, Inc.  All rights reserved.
++ * Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
+  * $COPYRIGHT$
+  * 
+  * Additional copyrights may follow
+@@ -168,6 +169,8 @@ typedef struct opal_atomic_lock_t opal_atomic_lock_t;
+ #include "opal/sys/sparcv9/atomic.h"
+ #elif OPAL_ASSEMBLY_ARCH == OMPI_SPARCV9_64
+ #include "opal/sys/sparcv9/atomic.h"
++#elif OPAL_ASSEMBLY_ARCH == OMPI_SYNC_BUILTIN
++#include "opal/sys/sync_builtin/atomic.h"
+ #endif
+ 
+ #ifndef DOXYGEN
+@@ -180,6 +183,12 @@ typedef struct opal_atomic_lock_t opal_atomic_lock_t;
+ #ifndef OPAL_HAVE_ATOMIC_CMPSET_64
+ #define OPAL_HAVE_ATOMIC_CMPSET_64 0
+ #endif
++#ifndef OPAL_HAVE_ATOMIC_SWAP_32
++#define OPAL_HAVE_ATOMIC_SWAP_32 0
++#endif
++#ifndef OPAL_HAVE_ATOMIC_SWAP_64
++#define OPAL_HAVE_ATOMIC_SWAP_64 0
++#endif
+ #endif /* DOXYGEN */
+ 
+ /**********************************************************************
+diff --git a/opal/include/opal/sys/sync_builtin/Makefile.am b/opal/include/opal/sys/sync_builtin/Makefile.am
+new file mode 100644
+index 0000000..a0d993c
+--- /dev/null
++++ b/opal/include/opal/sys/sync_builtin/Makefile.am
+@@ -0,0 +1,24 @@
++#
++# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
++#                         University Research and Technology
++#                         Corporation.  All rights reserved.
++# Copyright (c) 2004-2005 The University of Tennessee and The University
++#                         of Tennessee Research Foundation.  All rights
++#                         reserved.
++# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart, 
++#                         University of Stuttgart.  All rights reserved.
++# Copyright (c) 2004-2005 The Regents of the University of California.
++#                         All rights reserved.
++# Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
++# $COPYRIGHT$
++# 
++# Additional copyrights may follow
++# 
++# $HEADER$
++#
++
++# This makefile.am does not stand on its own - it is included from opal/include/Makefile.am
++
++headers += \
++	opal/sys/sync_builtin/atomic.h \
++	opal/sys/sync_builtin/timer.h
+diff --git a/opal/include/opal/sys/sync_builtin/atomic.h b/opal/include/opal/sys/sync_builtin/atomic.h
+new file mode 100644
+index 0000000..307240a
+--- /dev/null
++++ b/opal/include/opal/sys/sync_builtin/atomic.h
+@@ -0,0 +1,116 @@
++/*
++ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
++ *                         University Research and Technology
++ *                         Corporation.  All rights reserved.
++ * Copyright (c) 2004-2006 The University of Tennessee and The University
++ *                         of Tennessee Research Foundation.  All rights
++ *                         reserved.
++ * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
++ *                         University of Stuttgart.  All rights reserved.
++ * Copyright (c) 2004-2005 The Regents of the University of California.
++ *                         All rights reserved.
++ * Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
++ * $COPYRIGHT$
++ * 
++ * Additional copyrights may follow
++ * 
++ * $HEADER$
++ */
++
++#ifndef OMPI_SYS_ARCH_ATOMIC_H
++#define OMPI_SYS_ARCH_ATOMIC_H 1
++
++/**********************************************************************
++ *
++ * Memory Barriers
++ *
++ *********************************************************************/
++#define OPAL_HAVE_ATOMIC_MEM_BARRIER 1
++
++static inline void opal_atomic_mb(void)
++{    
++    __sync_synchronize();
++}
++
++static inline void opal_atomic_rmb(void)
++{
++    __sync_synchronize();
++}
++
++static inline void opal_atomic_wmb(void)
++{    
++    __sync_synchronize();
++}
++
++/**********************************************************************
++ *
++ * Atomic math operations
++ *
++ *********************************************************************/
++
++#define OPAL_HAVE_ATOMIC_CMPSET_32 1
++static inline int opal_atomic_cmpset_acq_32( volatile int32_t *addr,
++                                             int32_t oldval, int32_t newval)
++{
++    return __sync_bool_compare_and_swap(addr, oldval, newval);
++}
++
++
++static inline int opal_atomic_cmpset_rel_32( volatile int32_t *addr,
++                                             int32_t oldval, int32_t newval)
++{
++    return __sync_bool_compare_and_swap(addr, oldval, newval);}
++
++static inline int opal_atomic_cmpset_32( volatile int32_t *addr,
++                                         int32_t oldval, int32_t newval)
++{
++    return __sync_bool_compare_and_swap(addr, oldval, newval);
++}
++
++#define OPAL_HAVE_ATOMIC_MATH_32 1
++
++#define OPAL_HAVE_ATOMIC_ADD_32 1
++static inline int32_t opal_atomic_add_32(volatile int32_t *addr, int32_t delta)
++{
++    return __sync_fetch_and_add(addr, delta);
++}
++
++#define OPAL_HAVE_ATOMIC_SUB_32 1
++static inline int32_t opal_atomic_sub_32(volatile int32_t *addr, int32_t delta)
++{
++    return __sync_fetch_and_sub(addr, delta);
++}
++
++#define OPAL_HAVE_ATOMIC_CMPSET_64 1
++static inline int opal_atomic_cmpset_acq_64( volatile int64_t *addr,
++                                             int64_t oldval, int64_t newval)
++{
++    return __sync_bool_compare_and_swap(addr, oldval, newval);
++}
++
++static inline int opal_atomic_cmpset_rel_64( volatile int64_t *addr,
++                                             int64_t oldval, int64_t newval)
++{
++    return __sync_bool_compare_and_swap(addr, oldval, newval);}
++
++
++static inline int opal_atomic_cmpset_64( volatile int64_t *addr,
++                                         int64_t oldval, int64_t newval)
++{
++    return __sync_bool_compare_and_swap(addr, oldval, newval);
++}
++
++#define OPAL_HAVE_ATOMIC_MATH_64 1
++#define OPAL_HAVE_ATOMIC_ADD_64 1
++static inline int64_t opal_atomic_add_64(volatile int64_t *addr, int64_t delta)
++{
++    return __sync_fetch_and_add(addr, delta);
++}
++
++#define OPAL_HAVE_ATOMIC_SUB_64 1
++static inline int64_t opal_atomic_sub_64(volatile int64_t *addr, int64_t delta)
++{
++    return __sync_fetch_and_sub(addr, delta);
++}
++
++#endif /* ! OMPI_SYS_ARCH_ATOMIC_H */
+diff --git a/opal/include/opal/sys/sync_builtin/timer.h b/opal/include/opal/sys/sync_builtin/timer.h
+new file mode 100644
+index 0000000..aafbc9b
+--- /dev/null
++++ b/opal/include/opal/sys/sync_builtin/timer.h
+@@ -0,0 +1,27 @@
++/*
++ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
++ *                         University Research and Technology
++ *                         Corporation.  All rights reserved.
++ * Copyright (c) 2004-2005 The University of Tennessee and The University
++ *                         of Tennessee Research Foundation.  All rights
++ *                         reserved.
++ * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
++ *                         University of Stuttgart.  All rights reserved.
++ * Copyright (c) 2004-2005 The Regents of the University of California.
++ *                         All rights reserved.
++ * Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
++ * $COPYRIGHT$
++ * 
++ * Additional copyrights may follow
++ * 
++ * $HEADER$
++ */
++
++#ifndef OMPI_SYS_ARCH_TIMER_H
++#define OMPI_SYS_ARCH_TIMER_H 1
++
++typedef long opal_timer_t;
++
++#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0
++
++#endif /* ! OMPI_SYS_ARCH_TIMER_H */
+-- 
+1.8.3.1
+
+From 1b2fdab7b6bf77bf4e818c84a798ba205c789483 Mon Sep 17 00:00:00 2001
+From: Brian Barrett <brbarret@open-mpi-git-mirror.example.com>
+Date: Wed, 23 Nov 2011 17:05:01 +0000
+Subject: [PATCH] * Shouldn't have a timer header for sync_builtin, since it
+ doesn't actually   have timer support * Default timer size should be a long,
+ not an int.  Int will roll over way   too fast, with no performance benifit
+ on 64 bit machines...
+
+---
+ opal/include/opal/sys/sync_builtin/Makefile.am |  3 +--
+ opal/include/opal/sys/sync_builtin/timer.h     | 27 --------------------------
+ opal/include/opal/sys/timer.h                  |  2 +-
+ 3 files changed, 2 insertions(+), 30 deletions(-)
+ delete mode 100644 opal/include/opal/sys/sync_builtin/timer.h
+
+diff --git a/opal/include/opal/sys/sync_builtin/Makefile.am b/opal/include/opal/sys/sync_builtin/Makefile.am
+index a0d993c..fbb8a60 100644
+--- a/opal/include/opal/sys/sync_builtin/Makefile.am
++++ b/opal/include/opal/sys/sync_builtin/Makefile.am
+@@ -20,5 +20,4 @@
+ # This makefile.am does not stand on its own - it is included from opal/include/Makefile.am
+ 
+ headers += \
+-	opal/sys/sync_builtin/atomic.h \
+-	opal/sys/sync_builtin/timer.h
++	opal/sys/sync_builtin/atomic.h
+diff --git a/opal/include/opal/sys/sync_builtin/timer.h b/opal/include/opal/sys/sync_builtin/timer.h
+deleted file mode 100644
+index aafbc9b..0000000
+--- a/opal/include/opal/sys/sync_builtin/timer.h
++++ /dev/null
+@@ -1,27 +0,0 @@
+-/*
+- * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
+- *                         University Research and Technology
+- *                         Corporation.  All rights reserved.
+- * Copyright (c) 2004-2005 The University of Tennessee and The University
+- *                         of Tennessee Research Foundation.  All rights
+- *                         reserved.
+- * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
+- *                         University of Stuttgart.  All rights reserved.
+- * Copyright (c) 2004-2005 The Regents of the University of California.
+- *                         All rights reserved.
+- * Copyright (c) 2011      Sandia National Laboratories. All rights reserved.
+- * $COPYRIGHT$
+- * 
+- * Additional copyrights may follow
+- * 
+- * $HEADER$
+- */
+-
+-#ifndef OMPI_SYS_ARCH_TIMER_H
+-#define OMPI_SYS_ARCH_TIMER_H 1
+-
+-typedef long opal_timer_t;
+-
+-#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0
+-
+-#endif /* ! OMPI_SYS_ARCH_TIMER_H */
+diff --git a/opal/include/opal/sys/timer.h b/opal/include/opal/sys/timer.h
+index 967b951..cc8b922 100644
+--- a/opal/include/opal/sys/timer.h
++++ b/opal/include/opal/sys/timer.h
+@@ -103,7 +103,7 @@ BEGIN_C_DECLS
+ #ifndef OPAL_HAVE_SYS_TIMER_GET_CYCLES
+ #define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0
+ 
+-typedef int opal_timer_t;
++typedef long opal_timer_t;
+ #endif
+ #endif
+ 
+-- 
+1.8.3.1
+
+From e270e4d0f7b2b89d16d0f1ac736619118ad7f340 Mon Sep 17 00:00:00 2001
+From: George Bosilca <bosilca@open-mpi-git-mirror.example.com>
+Date: Sun, 15 Dec 2013 16:48:27 +0000
+Subject: [PATCH] Make the builtin atomics follow the same convention as every
+ other atomic support we have ([op]_and_fetch instead of fetch_and_[op]).
+
+---
+ opal/include/opal/sys/sync_builtin/atomic.h | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/opal/include/opal/sys/sync_builtin/atomic.h b/opal/include/opal/sys/sync_builtin/atomic.h
+index 307240a..e0dc76b 100644
+--- a/opal/include/opal/sys/sync_builtin/atomic.h
++++ b/opal/include/opal/sys/sync_builtin/atomic.h
+@@ -2,7 +2,7 @@
+  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
+  *                         University Research and Technology
+  *                         Corporation.  All rights reserved.
+- * Copyright (c) 2004-2006 The University of Tennessee and The University
++ * Copyright (c) 2004-2013 The University of Tennessee and The University
+  *                         of Tennessee Research Foundation.  All rights
+  *                         reserved.
+  * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
+@@ -42,6 +42,12 @@ static inline void opal_atomic_wmb(void)
+     __sync_synchronize();
+ }
+ 
++#if OPAL_WANT_SMP_LOCKS
++#define MB() opal_atomic_mb()
++#else
++#define MB()
++#endif
++
+ /**********************************************************************
+  *
+  * Atomic math operations
+@@ -72,13 +78,13 @@ static inline int opal_atomic_cmpset_32( volatile int32_t *addr,
+ #define OPAL_HAVE_ATOMIC_ADD_32 1
+ static inline int32_t opal_atomic_add_32(volatile int32_t *addr, int32_t delta)
+ {
+-    return __sync_fetch_and_add(addr, delta);
++    return __sync_add_and_fetch(addr, delta);
+ }
+ 
+ #define OPAL_HAVE_ATOMIC_SUB_32 1
+ static inline int32_t opal_atomic_sub_32(volatile int32_t *addr, int32_t delta)
+ {
+-    return __sync_fetch_and_sub(addr, delta);
++    return __sync_sub_and_fetch(addr, delta);
+ }
+ 
+ #define OPAL_HAVE_ATOMIC_CMPSET_64 1
+@@ -104,13 +110,13 @@ static inline int opal_atomic_cmpset_64( volatile int64_t *addr,
+ #define OPAL_HAVE_ATOMIC_ADD_64 1
+ static inline int64_t opal_atomic_add_64(volatile int64_t *addr, int64_t delta)
+ {
+-    return __sync_fetch_and_add(addr, delta);
++    return __sync_add_and_fetch(addr, delta);
+ }
+ 
+ #define OPAL_HAVE_ATOMIC_SUB_64 1
+ static inline int64_t opal_atomic_sub_64(volatile int64_t *addr, int64_t delta)
+ {
+-    return __sync_fetch_and_sub(addr, delta);
++    return __sync_sub_and_fetch(addr, delta);
+ }
+ 
+ #endif /* ! OMPI_SYS_ARCH_ATOMIC_H */
+-- 
+1.8.3.1
+
+diff --git a/configure b/configure
+index b585768..5d3eae1 100755
+--- a/configure
++++ b/configure
+@@ -1918,6 +1938,7 @@ with_wrapper_fcflags
+ enable_cxx_exceptions
+ with_exflags
+ enable_smp_locks
++enable_builtin_atomics
+ with_broken_qsort
+ with_threads
+ enable_opal_multi_threads
+@@ -2720,6 +2741,9 @@ Optional Features:
+   --enable-smp-locks      enable smp locks in atomic ops. Do not disable if
+                           code will ever run in SMP or multi-threaded
+                           environment. (default: enabled)
++  --enable-builtin-atomics
++                          Enable use of __sync builtin atomics (default:
++                          disabled)
+   --enable-opal-multi-threads
+                           Enable thread support inside OPAL (default:
+                           disabled)
+@@ -26558,8 +26684,49 @@ cat >>confdefs.h <<_ACEOF
+ _ACEOF
+ 
+ 
++    # Check whether --enable-builtin-atomics was given.
++if test "${enable_builtin_atomics+set}" = set; then :
++  enableval=$enable_builtin_atomics;
++fi
++
++
+     if test "$ompi_cv_c_compiler_vendor" = "microsoft" ; then
+         ompi_cv_asm_arch="WINDOWS"
++    elif test "$enable_builtin_atomics" = "yes" ; then
++
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync builtin atomics" >&5
++$as_echo_n "checking for __sync builtin atomics... " >&6; }
++
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++__sync_synchronize()
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++     ompi_cv_asm_arch="SYNC_BUILTIN"
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++     as_fn_error $? "__sync builtin atomics requested but not found." "$LINENO" 5
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++
++$as_echo "#define OPAL_C_GCC_INLINE_ASSEMBLY 1" >>confdefs.h
++
++       if test "$WANT_MPI_CXX_SUPPORT" = "1"; then :
++
++$as_echo "#define OMPI_CXX_GCC_INLINE_ASSEMBLY 1" >>confdefs.h
++
++fi
+     else
+ 
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if .proc/endp is needed" >&5
+@@ -27464,10 +27631,45 @@ as_fn_error $? "Can not continue." "$LINENO" 5
+             ;;
+ 
+         *)
+-            as_fn_error $? "No atomic primitives available for $host" "$LINENO" 5
++
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync builtin atomics" >&5
++$as_echo_n "checking for __sync builtin atomics... " >&6; }
++
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++__sync_synchronize()
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++     ompi_cv_asm_arch="SYNC_BUILTIN"
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++     as_fn_error $? "No atomic primitives available for $host" "$LINENO" 5
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+             ;;
+         esac
+ 
++      if test "$ompi_cv_asm_arch" = "SYNC_BUILTIN" ; then
++
++$as_echo "#define OPAL_C_GCC_INLINE_ASSEMBLY 1" >>confdefs.h
++
++        if test "$WANT_MPI_CXX_SUPPORT" = "1"; then :
++
++$as_echo "#define OMPI_CXX_GCC_INLINE_ASSEMBLY 1" >>confdefs.h
++
++fi
++      else
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define OPAL_ASM_SUPPORT_64BIT $OPAL_ASM_SUPPORT_64BIT
+@@ -27866,6 +28068,7 @@ cat >>confdefs.h <<_ACEOF
+ _ACEOF
+ 
+ 
++      fi # if ompi_cv_asm_arch = SYNC_BUILTIN
+     fi # if cv_c_compiler_vendor = microsoft
+ 
+     result="OMPI_$ompi_cv_asm_arch"
+@@ -27885,7 +28088,7 @@ _ACEOF
+ 
+ 
+ 
+-if test "$ompi_cv_asm_arch" != "WINDOWS" ; then
++if test "$ompi_cv_asm_arch" != "WINDOWS" -a "$ompi_cv_asm_arch" != "SYNC_BUILTIN" ; then
+     # Extract the first word of "perl", so it can be a program name with args.
+ set dummy perl; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
diff --git a/SOURCES/openmpi-1.6.4-ppc64le.patch b/SOURCES/openmpi-1.6.4-ppc64le.patch
new file mode 100644
index 0000000..3e2fd36
--- /dev/null
+++ b/SOURCES/openmpi-1.6.4-ppc64le.patch
@@ -0,0 +1,30 @@
+diff -up openmpi-1.6.4/configure.ppc64le openmpi-1.6.4/configure
+--- openmpi-1.6.4/configure.ppc64le	2014-09-09 09:33:10.960054144 +0000
++++ openmpi-1.6.4/configure	2014-09-09 09:34:37.930058864 +0000
+@@ -27239,7 +27239,7 @@ _ACEOF
+             OMPI_GCC_INLINE_ASSIGN='"or %0,$0,$0" : "=&r"(ret)'
+             ;;
+ 
+-        powerpc-*|powerpc64-*)
++        powerpc-*|powerpc64-*|powerpc64le-*)
+ 
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PowerPC registers have r prefix" >&5
+ $as_echo_n "checking if PowerPC registers have r prefix... " >&6; }
+@@ -79533,7 +79533,7 @@ $as_echo "$compile_mode" >&6; }
+ 
+ 
+    case "${host}" in
+-   i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|sparc*-*linux*)
++   i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|powerpc64le-*linux*|sparc*-*linux*)
+               if test -r "/proc/cpuinfo"; then :
+   pstat_linux_happy="yes"
+ else
+@@ -85999,7 +85999,7 @@ fi
+ fi
+ 
+    case "${host}" in
+-   i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|sparc*-*linux*)
++   i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|powerpc64le-*linux*|sparc*-*linux*)
+         if test "$timer_linux_happy" = "yes"; then :
+   if test -r "/proc/cpuinfo"; then :
+   timer_linux_happy="yes"
diff --git a/SPECS/openmpi.spec b/SPECS/openmpi.spec
index 0ea68a0..570acf8 100644
--- a/SPECS/openmpi.spec
+++ b/SPECS/openmpi.spec
@@ -19,7 +19,7 @@
 
 Name:			openmpi%{?_cc_name_suffix}
 Version:		1.6.4
-Release:		3%{?dist}
+Release:		5%{?dist}
 Summary:		Open Message Passing Interface
 Group:			Development/Libraries
 License:		BSD, MIT and Romio
@@ -37,6 +37,10 @@ Source2:		macros.openmpi
 Patch0:			openmpi-removed.patch
 # Patch to use system ltdl for tests
 Patch1:                 openmpi-ltdl.patch
+# Learn configure about ppc64le
+Patch2:			openmpi-1.6.4-ppc64le.patch
+# Backport of gcc atomics needed for AArch64
+Patch3:			openmpi-1.6.4-aarch64.patch
 
 BuildRequires:		gcc-gfortran
 #sparc 64 doesn't have valgrind
@@ -51,6 +55,9 @@ BuildRequires:		libesmtp-devel
 %ifarch x86_64
 BuildRequires:         infinipath-psm-devel
 %endif
+%ifarch ppc64le
+BuildRequires:		automake
+%endif
 
 Obsoletes:             openmpi-libs
 Obsoletes:             openmpi-psm
@@ -108,7 +115,7 @@ Contains development headers and libraries for openmpi
 %ifarch ia64
 %global mode 64
 %endif
-%ifarch x86_64 ppc64 sparc64
+%ifarch x86_64 %{power64} sparc64
 %global mode 64
 %global modeflag -m64
 %endif
@@ -121,10 +128,25 @@ Contains development headers and libraries for openmpi
 %setup -q -n openmpi-%{version}
 %patch0 -p1 -b .removed
 %patch1 -p1 -b .ltdl
+%ifarch ppc64le
+%patch2 -p1 -b .ppc64le
+%endif
+%ifarch aarch64
+%patch3 -p1 -b .aarch64
+%endif
 # Make sure we don't use the local libltdl library
 rm -r opal/libltdl
 
 %build
+%ifarch ppc64le
+# learn autotools about new arch
+cp -p %{_datadir}/automake-*/config.{guess,sub} ./config/
+cp -p %{_datadir}/automake-*/config.{guess,sub} ./ompi/mca/io/romio/romio/confdb/
+cp -p %{_datadir}/automake-*/config.{guess,sub} ./ompi/contrib/vt/vt/config/
+cp -p %{_datadir}/automake-*/config.{guess,sub} ./ompi/contrib/vt/vt/extlib/otf/config/
+%endif
+
+# %%configure macro would change --prefix
 ./configure --prefix=%{_libdir}/%{name} \
 %ifarch armv5tel
 	--build=armv5tel-redhat-linux-gnueabi \
@@ -141,6 +163,9 @@ rm -r opal/libltdl
 	--with-valgrind \
 	--enable-memchecker \
 %endif
+%ifarch aarch64
+	--enable-builtin-atomics \
+%endif
 	--with-esmtp \
 	--with-hwloc=/usr \
 	--with-libltdl=/usr \
@@ -244,6 +269,14 @@ make check
 %{_sysconfdir}/rpm/macros.%{namearch}
 
 %changelog
+* Fri Sep 12 2014 Dan Horák <dhorak@redhat.com> - 1.6.4-5
+- add support for aarch64 (backport by Marcin Juszkiewicz)
+- Resolves: #1132244
+
+* Tue Sep 9 2014 Dan Horák <dhorak@redhat.com> - 1.6.4-4
+- add support for ppc64le
+- Resolves: #1125635
+
 * Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.6.4-3
 - Mass rebuild 2013-12-27