Commit 58ea4c20 authored by sgjesse@chromium.org's avatar sgjesse@chromium.org

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
parent fb0daff1
...@@ -204,10 +204,16 @@ LIBRARY_FLAGS = { ...@@ -204,10 +204,16 @@ LIBRARY_FLAGS = {
'LINKFLAGS': ['-m32'] 'LINKFLAGS': ['-m32']
}, },
'arch:arm': { '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': { 'simulator:arm': {
'CCFLAGS': ['-m32', '-DCAN_USE_UNALIGNED_ACCESSES=1'], 'CCFLAGS': ['-m32'],
'LINKFLAGS': ['-m32'] 'LINKFLAGS': ['-m32']
}, },
'arch:mips': { 'arch:mips': {
...@@ -734,6 +740,11 @@ SIMPLE_OPTIONS = { ...@@ -734,6 +740,11 @@ SIMPLE_OPTIONS = {
'default': 'none', 'default': 'none',
'help': 'build with simulator' 'help': 'build with simulator'
}, },
'unalignedaccesses': {
'values': ['default', 'on', 'off'],
'default': 'default',
'help': 'set whether the ARM target supports unaligned accesses'
},
'disassembler': { 'disassembler': {
'values': ['on', 'off'], 'values': ['on', 'off'],
'default': 'off', 'default': 'off',
...@@ -852,6 +863,10 @@ def VerifyOptions(env): ...@@ -852,6 +863,10 @@ def VerifyOptions(env):
Abort("Shared Object soname not applicable for static library.") Abort("Shared Object soname not applicable for static library.")
if env['os'] != 'win32' and env['pgo'] != 'off': if env['os'] != 'win32' and env['pgo'] != 'off':
Abort("Profile guided optimization only supported on Windows.") 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(): for (name, option) in SIMPLE_OPTIONS.iteritems():
if (not option.get('default')) and (name not in ARGUMENTS): if (not option.get('default')) and (name not in ARGUMENTS):
message = ("A value for option %s must be specified (%s)." % message = ("A value for option %s must be specified (%s)." %
......
...@@ -66,10 +66,15 @@ ...@@ -66,10 +66,15 @@
# define CAN_USE_THUMB_INSTRUCTIONS 1 # define CAN_USE_THUMB_INSTRUCTIONS 1
#endif #endif
// Simulator should support ARM5 instructions. // Simulator should support ARM5 instructions and unaligned access by default.
#if !defined(__arm__) #if !defined(__arm__)
# define CAN_USE_ARMV5_INSTRUCTIONS 1 # define CAN_USE_ARMV5_INSTRUCTIONS 1
# define CAN_USE_THUMB_INSTRUCTIONS 1 # define CAN_USE_THUMB_INSTRUCTIONS 1
# ifndef CAN_USE_UNALIGNED_ACCESSES
# define CAN_USE_UNALIGNED_ACCESSES 1
# endif
#endif #endif
#if CAN_USE_UNALIGNED_ACCESSES #if CAN_USE_UNALIGNED_ACCESSES
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment