Index: src/include/linux/arm/atomic_ops.h |
diff --git a/src/include/linux/arm/atomic_ops.h b/src/include/linux/arm/atomic_ops.h |
deleted file mode 100644 |
index 0cde4058184ba479fc4c23c996699b20361f850b..0000000000000000000000000000000000000000 |
--- a/src/include/linux/arm/atomic_ops.h |
+++ /dev/null |
@@ -1,81 +0,0 @@ |
-/* |
- * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#ifndef NATIVE_CLIENT_SRC_INCLUDE_LINUX_ARM_ATOMIC_OPS_LINUX_ARM_H_ |
-#define NATIVE_CLIENT_SRC_INCLUDE_LINUX_ARM_ATOMIC_OPS_LINUX_ARM_H_ 1 |
- |
-// Used only by trusted code. Untrusted code uses gcc intrinsics. |
- |
-#include "native_client/src/include/portability.h" |
-#include <stdint.h> |
- |
-typedef int32_t Atomic32; |
- |
-static INLINE Atomic32 CompareAndSwap(volatile Atomic32* ptr, |
- Atomic32 old_value, |
- Atomic32 new_value) { |
- Atomic32 oldval, res; |
- do { |
- __asm__ __volatile__( |
- "ldrex %1, [%3]\n" |
- "mov %0, #0\n" |
- "teq %1, %4\n" |
- /* |
- * The if-then block affects the following four instructions. |
- * But we only have one we want to predicate. So we have to |
- * add three nops when compiling for Thumb. |
- */ |
- "itt eq\n" |
- "strexeq %0, %5, [%3]\n" |
-#ifdef __thumb__ |
- "nop\n" |
- "nop\n" |
- "nop\n" |
-#endif |
- : "=&r" (res), "=&r" (oldval), "+Qo" (*ptr) |
- : "r" (ptr), "Ir" (old_value), "r" (new_value) |
- : "cc", "memory"); |
- } while (res); |
- return oldval; |
-} |
- |
-static INLINE Atomic32 AtomicExchange(volatile Atomic32* ptr, |
- Atomic32 new_value) { |
- Atomic32 tmp, old; |
- |
- __asm__ __volatile__( |
- "1:\n" |
- "ldrex %1, [%2]\n" |
- "strex %0, %3, [%2]\n" |
- "teq %0, #0\n" |
- "bne 1b" |
- : "=&r" (tmp), "=&r" (old) |
- : "r" (ptr), "r" (new_value) |
- : "cc", "memory"); |
- |
- return old; |
-} |
- |
-static INLINE Atomic32 AtomicIncrement(volatile Atomic32* ptr, |
- Atomic32 increment) { |
- Atomic32 tmp, res; |
- |
- __asm__ __volatile__( |
- "1:\n" |
- "ldrex %1, [%2]\n" |
- "add %1, %1, %3\n" |
- "strex %0, %1, [%2]\n" |
- "cmp %0, #0\n" |
- "bne 1b" |
- : "=&r" (tmp), // %0 |
- "=&r"(res) // %1 |
- : "r" (ptr), // %2 |
- "r"(increment) // %3 |
- : "cc", "memory"); |
- return res; |
-} |
- |
-#endif /* NATIVE_CLIENT_SRC_INCLUDE_LINUX_ARM_ATOMIC_OPS_LINUX_ARM_H_ */ |