Index: src/macros.h ================================================================== --- src/macros.h +++ src/macros.h @@ -76,10 +76,46 @@ # define OF_X86_ASM # elif defined(__ppc__) || defined(__PPC__) # define OF_PPC_ASM # elif defined(__arm__) || defined(__ARM__) # define OF_ARM_ASM +# ifdef __ARM_ARCH_7__ +# define OF_ARMV7_ASM +# endif +# ifdef __ARM_ARCH_7A__ +# define OF_ARMV7_ASM +# endif +# ifdef __ARM_ARCH_7R__ +# define OF_ARMV7_ASM +# endif +# ifdef __ARM_ARCH_7M__ +# define OF_ARMV7_ASM +# endif +# ifdef __ARM_ARCH_7EM__ +# define OF_ARMV7_ASM +# endif +# ifdef __ARM_ARCH_6__ +# define OF_ARMV6_ASM +# endif +# ifdef __ARM_ARCH_6J__ +# define OF_ARMV6_ASM +# endif +# ifdef __ARM_ARCH_6K__ +# define OF_ARMV6_ASM +# endif +# ifdef __ARM_ARCH_6Z__ +# define OF_ARMV6_ASM +# endif +# ifdef __ARM_ARCH_6ZK__ +# define OF_ARMV6_ASM +# endif +# ifdef __ARM_ARCH_6T2__ +# define OF_ARMV6_ASM +# endif +# ifdef OF_ARMV7_ASM +# define OF_ARMV6_ASM +# endif # endif #endif #define OF_ENSURE(cond) \ if (!(cond)) { \ @@ -150,11 +186,11 @@ __asm__ ( "lhbrx %0, 0, %1" : "=r"(i) : "r"(&i), "m"(i) ); -#elif defined(OF_ARM_ASM) && defined(__ARM_ARCH_6__) +#elif defined(OF_ARMV6_ASM) __asm__ ( "rev16 %0, %0" : "=r"(i) : "0"(i) ); @@ -178,11 +214,11 @@ __asm__ ( "lwbrx %0, 0, %1" : "=r"(i) : "r"(&i), "m"(i) ); -#elif defined(OF_ARM_ASM) && defined(__ARM_ARCH_6__) +#elif defined(OF_ARMV6_ASM) __asm__ ( "rev %0, %0" : "=r"(i) : "0"(i) );