From b4637f4f1f7a7be75b981d72e3c75a9ae79d1d7e Mon Sep 17 00:00:00 2001 From: Andy McFadden Date: Wed, 19 May 2010 22:38:07 -0700 Subject: [PATCH] Atomic/SMP update. [manual merge to dalvik-dev] Added an underscore to _ARM_HAVE_LDREX_STREX to make it match the others. Added __ARM_HAVE_DMB and __ARM_HAVE_LDREXD when appropriate. Fixed some typos. Change-Id: I85ca1980192b509a09190dd84f1ca4a361e9c3a2 --- libc/arch-arm/bionic/atomics_arm.S | 2 +- libc/arch-arm/include/machine/cpu-features.h | 24 ++++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/libc/arch-arm/bionic/atomics_arm.S b/libc/arch-arm/bionic/atomics_arm.S index 3006a9d37..78182285c 100644 --- a/libc/arch-arm/bionic/atomics_arm.S +++ b/libc/arch-arm/bionic/atomics_arm.S @@ -143,7 +143,7 @@ __atomic_inc: /* r0(new) r1(addr) -> r0(old) */ /* replaced swp instruction with ldrex/strex for ARMv6 & ARMv7 */ __atomic_swap: -#if defined (_ARM_HAVE_LDREX_STREX) +#if defined (__ARM_HAVE_LDREX_STREX) 1: ldrex r2, [r1] strex r3, r0, [r1] teq r3, #0 diff --git a/libc/arch-arm/include/machine/cpu-features.h b/libc/arch-arm/include/machine/cpu-features.h index ecf6ff6f3..0f969fa1e 100644 --- a/libc/arch-arm/include/machine/cpu-features.h +++ b/libc/arch-arm/include/machine/cpu-features.h @@ -38,7 +38,7 @@ * IMPORTANT: We have no intention to support anything below an ARMv4T ! */ -/* _ARM_ARCH_REVISION is a number corresponding to the ARM revision +/* __ARM_ARCH__ is a number corresponding to the ARM revision * we're going to support * * it looks like our toolchain doesn't define __ARM_ARCH__ @@ -142,18 +142,32 @@ * * ldr pc, [] * - * note that this affects any instruction that explicitely changes the + * note that this affects any instruction that explicitly changes the * value of the pc register, including ldm { ...,pc } or 'add pc, #offset' */ #if __ARM_ARCH__ >= 5 # define __ARM_HAVE_PC_INTERWORK #endif -/* define _ARM_HAVE_LDREX_STREX for ARMv6 and ARMv7 architecure to be - * used in replacement of depricated swp instruction +/* define __ARM_HAVE_LDREX_STREX for ARMv6 and ARMv7 architecture to be + * used in replacement of deprecated swp instruction */ #if __ARM_ARCH__ >= 6 -# define _ARM_HAVE_LDREX_STREX +# define __ARM_HAVE_LDREX_STREX +#endif + +/* define __ARM_HAVE_DMB for ARMv7 architecture + */ +#if __ARM_ARCH__ >= 7 +# define __ARM_HAVE_DMB +#endif + +/* define __ARM_HAVE_LDREXD for ARMv7 architecture + * (also present in ARMv6K, but not implemented in ARMv7-M, neither of which + * we care about) + */ +#if __ARM_ARCH__ >= 7 +# define __ARM_HAVE_LDREXD #endif