arm: provide arch_fetch_and_add()
authorDavid Vrabel <david.vrabel@citrix.com>
Fri, 8 May 2015 08:59:44 +0000 (10:59 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 8 May 2015 08:59:44 +0000 (10:59 +0200)
arch_fetch_and_add() atomically adds a value and returns the previous
value.

This generic arm implementation uses the GCC __sync_fetch_and_add()
builtin.  This builtin resulted in suitable inlined asm for GCC 4.8.3
(arm64) and GCC 4.6.3 (arm32).

This is needed to implement ticket locks.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/include/asm-arm/system.h

index ce3d38ac0cde1d097621bd5e3956171447e3c65b..2eb96e876940cc3799c73d71cc4b79fab4360166 100644 (file)
@@ -51,6 +51,8 @@
 # error "unknown ARM variant"
 #endif
 
+#define arch_fetch_and_add(x, v) __sync_fetch_and_add(x, v)
+
 extern struct vcpu *__context_switch(struct vcpu *prev, struct vcpu *next);
 
 #endif