Reviewers: Søren Gjesse, Description: Clean up the ifdefs on ARM. Ensure that we use ARMv5 instructions on ARMv6 and ARMv7 CPUs.
Please review this at http://codereview.chromium.org/206012 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/arm/codegen-arm.cc M src/arm/constants-arm.h M src/arm/macro-assembler-arm.cc Index: src/arm/constants-arm.h =================================================================== --- src/arm/constants-arm.h (revision 2882) +++ src/arm/constants-arm.h (working copy) @@ -43,10 +43,30 @@ # define USE_THUMB_INTERWORK 1 #endif +#if defined(__ARM_ARCH_5T__) || \ + defined(__ARM_ARCH_5TE__) || \ + defined(__ARM_ARCH_6__) || \ + defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7__) +# define CAN_USE_ARMV5_INSTRUCTIONS 1 +# define CAN_USE_THUMB_INSTRUCTIONS 1 +#endif + +#if defined(__ARM_ARCH_6__) || \ + defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7__) +# define CAN_USE_ARMV6_INSTRUCTIONS 1 +#endif + +#if defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7__) +# define CAN_USE_ARMV7_INSTRUCTIONS 1 +#endif + // Simulator should support ARM5 instructions. #if !defined(__arm__) -# define __ARM_ARCH_5__ 1 -# define __ARM_ARCH_5T__ 1 +# define CAN_USE_ARMV5_INSTRUCTIONS 1 +# define CAN_USE_THUMB_INSTRUCTIONS 1 #endif namespace assembler { Index: src/arm/codegen-arm.cc =================================================================== --- src/arm/codegen-arm.cc (revision 2882) +++ src/arm/codegen-arm.cc (working copy) @@ -4335,7 +4335,7 @@ Register source, Register scratch, Register zeros) { -#ifdef __ARM_ARCH_5__ +#ifdef CAN_USE_ARMV5_INSTRUCTIONS __ clz(zeros, source); // This instruction is only supported after ARM5. #else __ mov(zeros, Operand(0)); Index: src/arm/macro-assembler-arm.cc =================================================================== --- src/arm/macro-assembler-arm.cc (revision 2882) +++ src/arm/macro-assembler-arm.cc (working copy) @@ -53,20 +53,13 @@ // We do not support thumb inter-working with an arm architecture not supporting // the blx instruction (below v5t) -#if defined(USE_THUMB_INTERWORK) -#if !defined(__ARM_ARCH_5T__) && \ - !defined(__ARM_ARCH_5TE__) && \ - !defined(__ARM_ARCH_6__) && \ - !defined(__ARM_ARCH_7A__) && \ - !defined(__ARM_ARCH_7__) -// add tests for other versions above v5t as required -#error "for thumb inter-working we require architecture v5t or above" +#if defined(USE_THUMB_INTERWORK) && !defined(CAN_USE_THUMB_INSTRUCTIONS) +# error "for thumb inter-working we require architecture v5t or above" #endif -#endif // Using blx may yield better code, so use it when required or when available -#if defined(USE_THUMB_INTERWORK) || defined(__ARM_ARCH_5__) +#if defined(USE_THUMB_INTERWORK) || defined(CAN_USE_ARMV5_INSTRUCTIONS) #define USE_BLX 1 #endif --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---