Revision: 4737
Author: [email protected]
Date: Thu May 27 00:31:10 2010
Log: 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
http://code.google.com/p/v8/source/detail?r=4737

Modified:
 /branches/bleeding_edge/SConstruct
 /branches/bleeding_edge/src/arm/constants-arm.h

=======================================
--- /branches/bleeding_edge/SConstruct  Fri May 21 02:23:33 2010
+++ /branches/bleeding_edge/SConstruct  Thu May 27 00:31:10 2010
@@ -204,10 +204,16 @@
       '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 @@
     '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 @@
     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)." %
=======================================
--- /branches/bleeding_edge/src/arm/constants-arm.h     Thu May  6 05:49:12 2010
+++ /branches/bleeding_edge/src/arm/constants-arm.h     Thu May 27 00:31:10 2010
@@ -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

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to