From: sgjesse@chromium.org Date: Thu, 27 May 2010 07:31:10 +0000 (+0000) Subject: ARM: Default to use unaligned accesses in the simulator X-Git-Tag: upstream/4.7.83~21729 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=58ea4c20cd9c314a297e26195e73d354b46fc339;p=platform%2Fupstream%2Fv8.git ARM: Default to use unaligned accesses in the simulator Support building with or without unaligned accesses by using scons flag simulatorunalignedaccesses. $ scons simulator=arm simulatorunalignedaccesses=off $ scons simulator=arm simulatorunalignedaccesses=on If simulatorunalignedaccesses is not specified (or specified as default) the default is to use unaligned accesses. Review URL: http://codereview.chromium.org/2218003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4737 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/SConstruct b/SConstruct index cf6b57d..3321483 100644 --- a/SConstruct +++ b/SConstruct @@ -204,10 +204,16 @@ LIBRARY_FLAGS = { 'LINKFLAGS': ['-m32'] }, 'arch:arm': { - 'CPPDEFINES': ['V8_TARGET_ARCH_ARM'] + 'CPPDEFINES': ['V8_TARGET_ARCH_ARM'], + 'unalignedaccesses:on' : { + 'CPPDEFINES' : ['CAN_USE_UNALIGNED_ACCESSES=1'] + }, + 'unalignedaccesses:off' : { + 'CPPDEFINES' : ['CAN_USE_UNALIGNED_ACCESSES=0'] + } }, 'simulator:arm': { - 'CCFLAGS': ['-m32', '-DCAN_USE_UNALIGNED_ACCESSES=1'], + 'CCFLAGS': ['-m32'], 'LINKFLAGS': ['-m32'] }, 'arch:mips': { @@ -734,6 +740,11 @@ SIMPLE_OPTIONS = { 'default': 'none', 'help': 'build with simulator' }, + 'unalignedaccesses': { + 'values': ['default', 'on', 'off'], + 'default': 'default', + 'help': 'set whether the ARM target supports unaligned accesses' + }, 'disassembler': { 'values': ['on', 'off'], 'default': 'off', @@ -852,6 +863,10 @@ def VerifyOptions(env): Abort("Shared Object soname not applicable for static library.") if env['os'] != 'win32' and env['pgo'] != 'off': Abort("Profile guided optimization only supported on Windows.") + if not (env['arch'] == 'arm' or env['simulator'] == 'arm') and ('unalignedaccesses' in ARGUMENTS): + print env['arch'] + print env['simulator'] + Abort("Option unalignedaccesses only supported for the ARM architecture.") for (name, option) in SIMPLE_OPTIONS.iteritems(): if (not option.get('default')) and (name not in ARGUMENTS): message = ("A value for option %s must be specified (%s)." % diff --git a/src/arm/constants-arm.h b/src/arm/constants-arm.h index 57c5c1c..e36f595 100644 --- a/src/arm/constants-arm.h +++ b/src/arm/constants-arm.h @@ -66,10 +66,15 @@ # define CAN_USE_THUMB_INSTRUCTIONS 1 #endif -// Simulator should support ARM5 instructions. +// Simulator should support ARM5 instructions and unaligned access by default. #if !defined(__arm__) # define CAN_USE_ARMV5_INSTRUCTIONS 1 # define CAN_USE_THUMB_INSTRUCTIONS 1 + +# ifndef CAN_USE_UNALIGNED_ACCESSES +# define CAN_USE_UNALIGNED_ACCESSES 1 +# endif + #endif #if CAN_USE_UNALIGNED_ACCESSES