Author: f...@chromium.org
Date: Wed Mar 25 11:23:04 2009
New Revision: 1614

Modified:
    branches/bleeding_edge/src/assembler-arm.cc
    branches/bleeding_edge/src/assembler-arm.h
    branches/bleeding_edge/src/codegen-arm.cc

Log:
Fix and cleanup ARM port:
1) removed unused function, PcStoreOffset;
2) use macro instruction, Jump, when branching from JS code to C code.

This CL replaces http://codereview.chromium.org/53039/show, per our  
discussion.

Review URL: http://codereview.chromium.org/42610

Modified: branches/bleeding_edge/src/assembler-arm.cc
==============================================================================
--- branches/bleeding_edge/src/assembler-arm.cc (original)
+++ branches/bleeding_edge/src/assembler-arm.cc Wed Mar 25 11:23:04 2009
@@ -84,55 +84,6 @@
  CRegister cr15 = { 15 };


-// In order to determine the pc store offset, we execute a small code  
sequence.
-// See ARM Architecture Reference Manual section A-2.4.3
-// Note that 'str pc, [sp]' and 'stmia sp, {pc}' were using different  
offsets
-// under the QEMU emulator (now fixed), so we are careful to test the  
actual
-// instruction we are interested in (stmia).
-int PcStoreOffset() {
-#if !defined(__arm__)
-  // Building an ARM emulator based target. The emulator is wired for 8  
byte
-  // pc offsets as is the default in the spec.
-  static int pc_store_offset = 8;
-#elif defined(__arm__) && !defined(__thumb__)
-  // __arm__ may be defined in thumb mode.
-  static int pc_store_offset = -1;
-  asm volatile(
-    "sub sp, sp, #4  \n\t"
-    "sub r1, pc, #4  \n\t"
-    "stmia sp, {pc}  \n\t"
-    "ldr r0, [sp]    \n\t"
-    "add sp, sp, #4  \n\t"
-    "sub %0, r0, r1  \n\t"
-    : "=r" (pc_store_offset) : : "r0", "r1", "memory");
-#elif defined(__thumb__)
-  static int pc_store_offset = -1;
-  asm volatile(
-  "@   Enter ARM Mode  \n\t"
-      "adr r2, 1f      \n\t"
-      "bx  r2          \n\t"
-      ".ALIGN 4        \n\t"
-      ".ARM            \n"
-  "1:  sub sp, sp, #4  \n\t"
-      "sub r1, pc, #4  \n\t"
-      "stmia sp, {pc}  \n\t"
-      "ldr r0, [sp]    \n\t"
-      "add sp, sp, #4  \n\t"
-      "sub %0, r0, r1  \n"
-  "@   Enter THUMB Mode\n\t"
-      "adr r2, 2f+1    \n\t"
-      "bx  r2          \n\t"
-      ".THUMB          \n"
-  "2:                  \n\t"
-      : "=r" (pc_store_offset) : : "r0", "r1", "r2", "memory");
-#else
-#error unsupported architecture
-#endif
-  ASSERT(pc_store_offset == 8 || pc_store_offset == 12);
-  return pc_store_offset;
-}
-
-
  //  
-----------------------------------------------------------------------------
  // Implementation of RelocInfo


Modified: branches/bleeding_edge/src/assembler-arm.h
==============================================================================
--- branches/bleeding_edge/src/assembler-arm.h  (original)
+++ branches/bleeding_edge/src/assembler-arm.h  Wed Mar 25 11:23:04 2009
@@ -222,10 +222,6 @@
  inline Hint NegateHint(Hint ignored) { return no_hint; }


-// The pc store offset may be 8 or 12 depending on the processor  
implementation.
-int PcStoreOffset();
-
-
  //  
-----------------------------------------------------------------------------
  // Addressing modes and instruction variants


Modified: branches/bleeding_edge/src/codegen-arm.cc
==============================================================================
--- branches/bleeding_edge/src/codegen-arm.cc   (original)
+++ branches/bleeding_edge/src/codegen-arm.cc   Wed Mar 25 11:23:04 2009
@@ -4858,7 +4858,7 @@
    // Notify the simulator of the transition to C code.
    __ swi(assembler::arm::call_rt_r5);
  #else /* !defined(__arm__) */
-  __ mov(pc, Operand(r5));
+  __ Jump(r5);
  #endif /* !defined(__arm__) */

    if (always_allocate) {

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to