Skip to contentSkip to conversation

dapl: aarch64 support for linux

PATCH In review Mark Salter 2 participants 2 messages May 13, 2015 1 message not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 dapl: aarch64 support for linux

Add atomic ops to fix builds for aarch64 Linux.

---
 dapl/udapl/linux/dapl_osd.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
dapl/udapl/linux/dapl_osd.h +10 -1
index 10f71b0..2b255d0 100644
@@ -50,7 +50,8 @@
 #endif /* __linux__ */
 
 #if !defined (__i386__) && !defined (__ia64__) && !defined(__x86_64__) && \
-    !defined(__PPC__) && !defined(__PPC64__) && !defined(__s390x__)
+    !defined(__PPC__) && !defined(__PPC64__) && !defined(__s390x__) && \
+    !defined(__aarch64__)
 #error UNDEFINED ARCH
 #endif
 
@@ -214,6 +215,8 @@ dapl_os_atomic_inc (
 	: "=&r" (tmp), "+m" (v)
 	: "b" (v)
 	: "cc");
+#elif defined(__aarch64__)
+    __atomic_fetch_add(v, 1, __ATOMIC_ACQ_REL);
 #else  /* !__ia64__ */
     __asm__ __volatile__ (
 	"lock;" "incl %0"
@@ -258,6 +261,8 @@ dapl_os_atomic_dec (
 	: "=&r" (tmp), "+m" (v)
 	: "b" (v)
 	: "cc");
+#elif defined(__aarch64__)
+    __atomic_fetch_add(v, -1, __ATOMIC_ACQ_REL);
 #else  /* !__ia64__ */
     __asm__ __volatile__ (
 	"lock;" "decl %0"
@@ -322,6 +327,10 @@ dapl_os_atomic_assign (
         : "=&r" (current_value), "=m" (*v)
         : "r" (v), "r" (match_value), "r" (new_value), "m" (*v)
         : "cc", "memory");
+#elif defined(__aarch64__)
+    current_value = match_value;
+    __atomic_compare_exchange_n(v, &current_value, new_value, 1,
+				__ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
 #else
     __asm__ __volatile__ (
         "lock; cmpxchgl %1, %2"
Signature · 6 lines
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

A message that is not in the archive (sent off-list or not yet received): 1431543933-27781-1-git-send-email-msalter-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org

#2 lore raw
Quoted 60 lines

-----Original Message-----
From: Mark Salter [mailto:[email protected]]
Sent: Wednesday, May 13, 2015 12:06 PM
To: Davis, Arlin R
Cc: [email protected]; Mark Salter
Subject: [PATCH] dapl: aarch64 support for linux

Add atomic ops to fix builds for aarch64 Linux.

---
 dapl/udapl/linux/dapl_osd.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
dapl/udapl/linux/dapl_osd.h index renamed from dapl/udapl/linux/dapl_osd.h +0 -0

10f71b0..2b255d0 100644

dapl/udapl/linux/dapl_osd.h +2 -1
@@ -50,7 +50,8 @@
 #endif /* __linux__ */
 
 #if !defined (__i386__) && !defined (__ia64__) && !defined(__x86_64__)
 && \
-    !defined(__PPC__) && !defined(__PPC64__) && !defined(__s390x__)
+    !defined(__PPC__) && !defined(__PPC64__) && !defined(__s390x__)
 && \
+    !defined(__aarch64__)
 #error UNDEFINED ARCH

#endif

dapl/udapl/linux/dapl_osd.h +8 -1
@@ -214,6 +215,8 @@ dapl_os_atomic_inc (
 	: "=&r" (tmp), "+m" (v)
 	: "b" (v)
 	: "cc");
+#elif defined(__aarch64__)
+    __atomic_fetch_add(v, 1, __ATOMIC_ACQ_REL);
 #else  /* !__ia64__ */
     __asm__ __volatile__ (
 	"lock;" "incl %0"
@@ -258,6 +261,8 @@ dapl_os_atomic_dec (
 	: "=&r" (tmp), "+m" (v)
 	: "b" (v)
 	: "cc");
+#elif defined(__aarch64__)
+    __atomic_fetch_add(v, -1, __ATOMIC_ACQ_REL);
 #else  /* !__ia64__ */
     __asm__ __volatile__ (
 	"lock;" "decl %0"
@@ -322,6 +327,10 @@ dapl_os_atomic_assign (
         : "=&r" (current_value), "=m" (*v)
         : "r" (v), "r" (match_value), "r" (new_value), "m" (*v)
         : "cc", "memory");
+#elif defined(__aarch64__)
+    current_value = match_value;
+    __atomic_compare_exchange_n(v, &current_value, new_value, 1,
+				__ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
 #else
     __asm__ __volatile__ (
         "lock; cmpxchgl %1, %2"
--
Quoted 1 line

1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html