openmpi/debian/patches/hppa.patch

241 lines
8.5 KiB
Diff

Author: Helge Deller <deller@gmx.de>
Description: Support for the HPPA architecture
Bug-Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776730
Last-Updated: 2016-09-04
Forwarded: no
Index: openmpi-4.1.0/config/opal_config_asm.m4
===================================================================
--- openmpi-4.1.0.orig/config/opal_config_asm.m4
+++ openmpi-4.1.0/config/opal_config_asm.m4
@@ -1104,6 +1104,12 @@ AC_DEFUN([OPAL_CONFIG_ASM],[
[AC_MSG_ERROR([No atomic primitives available for $host])])
;;
+ hppa*)
+ opal_cv_asm_arch="HPPA"
+ OPAL_ASM_SUPPORT_64BIT=0
+ OPAL_GCC_INLINE_ASSIGN='"copy 0,%0" : "=&r"(ret)'
+ ;;
+
mips-*|mips64*)
# Should really find some way to make sure that we are on
# a MIPS III machine (r4000 and later)
Index: openmpi-4.1.0/opal/include/opal/sys/architecture.h
===================================================================
--- openmpi-4.1.0.orig/opal/include/opal/sys/architecture.h
+++ openmpi-4.1.0/opal/include/opal/sys/architecture.h
@@ -36,6 +36,7 @@
#define OPAL_X86_64 0030
#define OPAL_POWERPC32 0050
#define OPAL_POWERPC64 0051
+#define OPAL_HPPA 0120
#define OPAL_SPARC 0060
#define OPAL_SPARCV9_32 0061
#define OPAL_SPARCV9_64 0062
Index: openmpi-4.1.0/opal/include/opal/sys/hppa/atomic.h
===================================================================
--- /dev/null
+++ openmpi-4.1.0/opal/include/opal/sys/hppa/atomic.h
@@ -0,0 +1,95 @@
+/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
+ * University Research and Technology
+ * Corporation. All rights reserved.
+ * 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,
+ * 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 (c) 2014 Los Alamos National Security, LLC. All rights
+ * reserved.
+ * $COPYRIGHT$
+ *
+ * Additional copyrights may follow
+ *
+ * $HEADER$
+ */
+
+#ifndef OPAL_SYS_ARCH_ATOMIC_H
+#define OPAL_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();
+}
+
+#if OPAL_WANT_SMP_LOCKS
+#define MB() opal_atomic_mb()
+#else
+#define MB()
+#endif
+
+/**********************************************************************
+ *
+ * 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_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_sub_and_fetch(addr, delta);
+}
+
+#define OPAL_HAVE_ATOMIC_CMPSET_64 0
+
+#endif /* ! OPAL_SYS_ARCH_ATOMIC_H */
Index: openmpi-4.1.0/opal/include/opal/sys/hppa/Makefile.am
===================================================================
--- /dev/null
+++ openmpi-4.1.0/opal/include/opal/sys/hppa/Makefile.am
@@ -0,0 +1,23 @@
+#
+# 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$
+#
+# 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/hppa/atomic.h \
+ opal/sys/hppa/timer.h
Index: openmpi-4.1.0/opal/include/opal/sys/hppa/timer.h
===================================================================
--- /dev/null
+++ openmpi-4.1.0/opal/include/opal/sys/hppa/timer.h
@@ -0,0 +1,33 @@
+/*
+ * 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$
+ *
+ * Additional copyrights may follow
+ *
+ * $HEADER$
+ */
+
+#ifndef OPAL_SYS_ARCH_TIMER_H
+#define OPAL_SYS_ARCH_TIMER_H 1
+
+
+typedef uint64_t opal_timer_t;
+
+static inline opal_timer_t
+opal_sys_timer_get_cycles(void)
+{
+ return 0;
+}
+
+#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0
+
+#endif /* ! OPAL_SYS_ARCH_TIMER_H */
Index: openmpi-4.1.0/opal/include/opal/sys/timer.h
===================================================================
--- openmpi-4.1.0.orig/opal/include/opal/sys/timer.h
+++ openmpi-4.1.0/opal/include/opal/sys/timer.h
@@ -90,6 +90,8 @@ BEGIN_C_DECLS
#include "opal/sys/sparcv9/timer.h"
#elif OPAL_ASSEMBLY_ARCH == OPAL_MIPS
#include "opal/sys/mips/timer.h"
+#elif OPAL_ASSEMBLY_ARCH == OPAL_HPPA
+#include "opal/sys/hppa/timer.h"
#endif
#ifndef DOXYGEN
Index: openmpi-4.1.0/opal/mca/timer/linux/configure.m4
===================================================================
--- openmpi-4.1.0.orig/opal/mca/timer/linux/configure.m4
+++ openmpi-4.1.0/opal/mca/timer/linux/configure.m4
@@ -47,7 +47,7 @@ AC_DEFUN([MCA_opal_timer_linux_CONFIG],[
[timer_linux_happy="no"])])
case "${host}" in
- i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|powerpc64le-*linux*|powerpcle-*linux*|sparc*-*linux*|aarch64-*linux*)
+ i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|powerpc64le-*linux*|powerpcle-*linux*|sparc*-*linux*|aarch64-*linux*|hppa*-*linux*)
AS_IF([test "$timer_linux_happy" = "yes"],
[AS_IF([test -r "/proc/cpuinfo"],
[timer_linux_happy="yes"],
Index: openmpi-4.1.0/opal/include/opal/sys/atomic.h
===================================================================
--- openmpi-4.1.0.orig/opal/include/opal/sys/atomic.h
+++ openmpi-4.1.0/opal/include/opal/sys/atomic.h
@@ -169,6 +169,8 @@ enum {
#include "opal/sys/ia32/atomic.h"
#elif OPAL_ASSEMBLY_ARCH == OPAL_IA64
#include "opal/sys/ia64/atomic.h"
+#elif OPAL_ASSEMBLY_ARCH == OPAL_HPPA
+#include "opal/sys/hppa/atomic.h"
#elif OPAL_ASSEMBLY_ARCH == OPAL_MIPS
#include "opal/sys/mips/atomic.h"
#elif OPAL_ASSEMBLY_ARCH == OPAL_POWERPC32