Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Unity-Technologies/libatomic_ops.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2013-08-17 12:13:40 +0400
committerIvan Maidanski <ivmai@mail.ru>2013-08-17 13:27:06 +0400
commit584c496166eeaacfb320431ac9b4e3d26004c3ae (patch)
treee7d1dfa0b035c70f4446ecea38bc6f904b478019
parent171e056c49b4e07d64377a99f4544c6ae9db9403 (diff)
Support ARMv8 target (gcc/arm)
* src/atomic_ops/sysdeps/gcc/arm.h (__ARM_ARCH_8A__): Detect new macro (treated same as __ARM_ARCH_7A__). * src/atomic_ops/sysdeps/gcc/arm.h (AO_ARM_HAVE_SWP): Do not define for ARMv8 (since SWP{B} obsoleted); add comment. * src/atomic_ops/sysdeps/gcc/arm.h (AO_compare_and_swap): Add TODO item (for deprecated IT block containing wide Thumb instruction).
-rw-r--r--src/atomic_ops/sysdeps/gcc/arm.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/atomic_ops/sysdeps/gcc/arm.h b/src/atomic_ops/sysdeps/gcc/arm.h
index 9b05216..18a6355 100644
--- a/src/atomic_ops/sysdeps/gcc/arm.h
+++ b/src/atomic_ops/sysdeps/gcc/arm.h
@@ -47,7 +47,8 @@
&& ((!defined(__ARM_ARCH_5__) && !defined(__ARM_ARCH_5E__) \
&& !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) \
&& !defined(__ARM_ARCH_5TEJ__) && !defined(__ARM_ARCH_6M__)) \
- || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__))
+ || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
+ || defined(__ARM_ARCH_8A__))
# define AO_ARM_HAVE_LDREX
# if !defined(__ARM_ARCH_6__) && !defined(__ARM_ARCH_6J__) \
&& !defined(__ARM_ARCH_6T2__)
@@ -73,9 +74,10 @@
#endif /* ARMv6+ */
#if !defined(__ARM_ARCH_2__) && !defined(__ARM_ARCH_6M__) \
- && !defined(__thumb2__)
+ && !defined(__ARM_ARCH_8A__) && !defined(__thumb2__)
# define AO_ARM_HAVE_SWP
/* Note: ARMv6M is excluded due to no ARM mode support. */
+ /* Also, SWP is obsoleted for ARMv8+. */
#endif /* !__thumb2__ */
#ifdef AO_UNIPROCESSOR
@@ -440,6 +442,8 @@ AO_xor(volatile AO_t *p, AO_t value)
" ldrex %1, [%3]\n" /* get original */
" teq %1, %4\n" /* see if match */
# ifdef __thumb2__
+ /* TODO: Eliminate warning: it blocks containing wide Thumb */
+ /* instructions are deprecated in ARMv8. */
" it eq\n"
# endif
" strexeq %0, %5, [%3]\n" /* store new one if matched */