Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.1:Update
openmpi
arm_support
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File arm_support of Package openmpi
## Description: Support building for arm ## Origin/Author: jani.monoses@canonical.com ## Bug: bug URL Index: openmpi-1.4.3/config/ompi_config_asm.m4 =================================================================== --- openmpi-1.4.3.orig/config/ompi_config_asm.m4 2011-01-06 14:07:27.000000000 +0200 +++ openmpi-1.4.3/config/ompi_config_asm.m4 2011-01-06 14:49:30.000000000 +0200 @@ -875,6 +875,12 @@ OMPI_GCC_INLINE_ASSIGN='"movl [$]0, %0" : "=&r"(ret)' ;; + arm*) + ompi_cv_asm_arch="ARM" + OMPI_ASM_SUPPORT_64BIT=1 + OMPI_GCC_INLINE_ASSIGN='"mov r0, 0" : "=&r"(ret)' + ;; + ia64-*) ompi_cv_asm_arch="IA64" OMPI_ASM_SUPPORT_64BIT=1 Index: openmpi-1.4.3/opal/include/opal/sys/Makefile.am =================================================================== --- openmpi-1.4.3.orig/opal/include/opal/sys/Makefile.am 2011-01-06 14:07:27.000000000 +0200 +++ openmpi-1.4.3/opal/include/opal/sys/Makefile.am 2011-01-06 14:49:30.000000000 +0200 @@ -27,6 +27,7 @@ include opal/sys/alpha/Makefile.am include opal/sys/amd64/Makefile.am +include opal/sys/arm/Makefile.am include opal/sys/ia32/Makefile.am include opal/sys/ia64/Makefile.am include opal/sys/mips/Makefile.am Index: openmpi-1.4.3/opal/include/opal/sys/architecture.h =================================================================== --- openmpi-1.4.3.orig/opal/include/opal/sys/architecture.h 2011-01-06 14:07:27.000000000 +0200 +++ openmpi-1.4.3/opal/include/opal/sys/architecture.h 2011-01-06 14:49:30.000000000 +0200 @@ -36,6 +36,7 @@ #define OMPI_SPARCV9_32 0061 #define OMPI_SPARCV9_64 0062 #define OMPI_MIPS 0070 +#define OMPI_ARM 0100 /* Formats */ #define OMPI_DEFAULT 1000 /* standard for given architecture */ Index: openmpi-1.4.3/opal/include/opal/sys/arm/Makefile.am =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ openmpi-1.4.3/opal/include/opal/sys/arm/Makefile.am 2011-01-06 14:49:30.000000000 +0200 @@ -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/arm/atomic.h \ + opal/sys/arm/timer.h Index: openmpi-1.4.3/opal/include/opal/sys/arm/atomic.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ openmpi-1.4.3/opal/include/opal/sys/arm/atomic.h 2011-01-06 14:49:30.000000000 +0200 @@ -0,0 +1,163 @@ +/* + * 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 OMPI_SYS_ARCH_ATOMIC_H +#define OMPI_SYS_ARCH_ATOMIC_H 1 + +/* + * On armv7, everything is load-locked, store-conditional... + */ + +#if OMPI_WANT_SMP_LOCKS +#define MB() __sync_synchronize(); +#define RMB() MB() +#define WMB() MB(); + +#else + +#define MB() +#define RMB() +#define WMB() + +#endif + + +/********************************************************************** + * + * Define constants for ARM + * + *********************************************************************/ +#define OPAL_HAVE_ATOMIC_MEM_BARRIER 1 + +#define OPAL_HAVE_ATOMIC_CMPSET_32 1 +#define OPAL_HAVE_ATOMIC_MATH_32 1 +#define OPAL_HAVE_ATOMIC_ADD_32 1 +#define OPAL_HAVE_ATOMIC_SUB_32 1 + +#define OPAL_HAVE_ATOMIC_CMPSET_64 0 +#define OPAL_HAVE_ATOMIC_MATH_64 0 +#define OPAL_HAVE_ATOMIC_ADD_64 0 +#define OPAL_HAVE_ATOMIC_SUB_64 0 + +/********************************************************************** + * + * Memory Barriers + * + *********************************************************************/ + +static inline void opal_atomic_mb(void) +{ + MB(); +} + + +static inline void opal_atomic_rmb(void) +{ + RMB(); +} + + +static inline void opal_atomic_wmb(void) +{ + WMB(); +} + + +/********************************************************************** + * + * Atomic math operations + * + *********************************************************************/ + +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); +} + +static inline int opal_atomic_cmpset_acq_32(volatile int32_t *addr, + int32_t oldval, + int32_t newval) +{ + int rc; + + rc = opal_atomic_cmpset_32(addr, oldval, newval); + opal_atomic_rmb(); + + return rc; +} + + +static inline int opal_atomic_cmpset_rel_32(volatile int32_t *addr, + int32_t oldval, + int32_t newval) +{ + opal_atomic_wmb(); + return opal_atomic_cmpset_32(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); +} + + +static inline int opal_atomic_cmpset_acq_64(volatile int64_t *addr, + int64_t oldval, + int64_t newval) +{ + int rc; + + rc = opal_atomic_cmpset_64(addr, oldval, newval); + opal_atomic_rmb(); + + return rc; +} + + +static inline int opal_atomic_cmpset_rel_64(volatile int64_t *addr, + int64_t oldval, + int64_t newval) +{ + opal_atomic_wmb(); + return opal_atomic_cmpset_64(addr, oldval, newval); +} + +static inline int32_t opal_atomic_add_32(volatile int32_t* v, int inc) +{ + return __sync_add_and_fetch(v, inc); +} + +static inline int64_t opal_atomic_sub_64(volatile int64_t* v, int64_t dec) +{ + return __sync_sub_and_fetch(v, dec); +} + +static inline int64_t opal_atomic_add_64(volatile int64_t* v, int64_t inc) +{ + return __sync_add_and_fetch(v, inc); +} + + +static inline int32_t opal_atomic_sub_32(volatile int32_t* v, int dec) +{ + return __sync_sub_and_fetch(v, dec); +} +#endif /* ! OMPI_SYS_ARCH_ATOMIC_H */ Index: openmpi-1.4.3/opal/include/opal/sys/atomic.h =================================================================== --- openmpi-1.4.3.orig/opal/include/opal/sys/atomic.h 2011-01-06 14:07:27.000000000 +0200 +++ openmpi-1.4.3/opal/include/opal/sys/atomic.h 2011-01-06 14:49:30.000000000 +0200 @@ -148,6 +148,8 @@ #include "opal/sys/alpha/atomic.h" #elif OMPI_ASSEMBLY_ARCH == OMPI_AMD64 #include "opal/sys/amd64/atomic.h" +#elif OMPI_ASSEMBLY_ARCH == OMPI_ARM +#include "opal/sys/arm/atomic.h" #elif OMPI_ASSEMBLY_ARCH == OMPI_IA32 #include "opal/sys/ia32/atomic.h" #elif OMPI_ASSEMBLY_ARCH == OMPI_IA64 Index: openmpi-1.4.3/opal/include/opal/sys/arm/timer.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ openmpi-1.4.3/opal/include/opal/sys/arm/timer.h 2011-01-06 14:49:50.000000000 +0200 @@ -0,0 +1,32 @@ +/* + * 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 OMPI_SYS_ARCH_TIMER_H +#define OMPI_SYS_ARCH_TIMER_H 1 + +#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 1 + +typedef uint64_t opal_timer_t; + +static inline opal_timer_t +opal_sys_timer_get_cycles(void) +{ + return 0; +} + +#endif /* ! OMPI_SYS_ARCH_TIMER_H */ Index: openmpi-1.4.3/opal/include/opal/sys/timer.h =================================================================== --- openmpi-1.4.3.orig/opal/include/opal/sys/timer.h 2011-01-06 14:07:27.000000000 +0200 +++ openmpi-1.4.3/opal/include/opal/sys/timer.h 2011-01-06 14:49:30.000000000 +0200 @@ -81,6 +81,8 @@ /* don't include system-level gorp when generating doxygen files */ #elif OMPI_ASSEMBLY_ARCH == OMPI_AMD64 #include "opal/sys/amd64/timer.h" +#elif OMPI_ASSEMBLY_ARCH == OMPI_ARM +#include "opal/sys/arm/timer.h" #elif OMPI_ASSEMBLY_ARCH == OMPI_IA32 #include "opal/sys/ia32/timer.h" #elif OMPI_ASSEMBLY_ARCH == OMPI_IA64 Index: openmpi-1.4.3/opal/mca/timer/linux/configure.m4 =================================================================== --- openmpi-1.4.3.orig/opal/mca/timer/linux/configure.m4 2011-01-06 14:07:26.000000000 +0200 +++ openmpi-1.4.3/opal/mca/timer/linux/configure.m4 2011-01-06 14:49:30.000000000 +0200 @@ -42,7 +42,7 @@ [timer_linux_happy="no"])]) 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*|sparc*-*linux*|arm*-*linux*) AS_IF([test "$timer_linux_happy" = "yes"], [AS_IF([test -r "/proc/cpuinfo"], [timer_linux_happy="yes"],
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor