OSDN Git Service

ART: Fix x86_64 instrumentation_exit, also movsd -> movq
authorAndreas Gampe <agampe@google.com>
Wed, 23 Jul 2014 17:05:02 +0000 (10:05 -0700)
committerAndreas Gampe <agampe@google.com>
Wed, 23 Jul 2014 18:16:03 +0000 (11:16 -0700)
Change movd/movsd to movq.

Bug: 16386215

(cherry picked from commit fea29016a79f39ac12a4ba4ebdcbc86800c03427)

Change-Id: Icca71ca2aeeb2917aff46043051d6046f04395d4

runtime/arch/x86/quick_entrypoints_x86.S
runtime/arch/x86_64/quick_entrypoints_x86_64.S

index 3d87297..1522129 100644 (file)
@@ -1277,12 +1277,12 @@ DEFINE_FUNCTION art_quick_instrumentation_exit
     mov  %esp, %ecx               // Remember SP
     subl LITERAL(8), %esp         // Save float return value.
     CFI_ADJUST_CFA_OFFSET(8)
-    movsd %xmm0, (%esp)
+    movq %xmm0, (%esp)
     PUSH edx                      // Save gpr return value.
     PUSH eax
     subl LITERAL(16), %esp        // Align stack
     CFI_ADJUST_CFA_OFFSET(16)
-    movsd %xmm0, (%esp)           // Pass float return value.
+    movq %xmm0, (%esp)            // Pass float return value.
     PUSH edx                      // Pass gpr return value.
     PUSH eax
     PUSH ecx                      // Pass SP.
@@ -1297,7 +1297,7 @@ DEFINE_FUNCTION art_quick_instrumentation_exit
                                   // (ebx is pretending to be our LR).
     POP eax                       // Restore gpr return value.
     POP edx
-    movsd (%esp), %xmm0           // Restore fpr return value.
+    movq (%esp), %xmm0            // Restore fpr return value.
     addl LITERAL(8), %esp
     CFI_ADJUST_CFA_OFFSET(-8)
     RESTORE_REF_ONLY_CALLEE_SAVE_FRAME
index 885fbfd..af2823f 100644 (file)
@@ -1492,7 +1492,7 @@ DEFINE_FUNCTION art_quick_instrumentation_exit
     PUSH rax                  // Save integer result.
     subq LITERAL(8), %rsp     // Save floating-point result.
     CFI_ADJUST_CFA_OFFSET(8)
-    movd %xmm0, (%rsp)
+    movq %xmm0, (%rsp)
 
     movq  %gs:THREAD_SELF_OFFSET, %rdi        // Pass Thread.
     movq  %rax, %rdx                          // Pass integer result.
@@ -1503,7 +1503,7 @@ DEFINE_FUNCTION art_quick_instrumentation_exit
     movq  %rax, %rdi          // Store return PC
     movq  %rdx, %rsi          // Store second return PC in hidden arg.
 
-    movd (%rsp), %xmm0        // Restore floating-point result.
+    movq (%rsp), %xmm0        // Restore floating-point result.
     addq LITERAL(8), %rsp
     CFI_ADJUST_CFA_OFFSET(-8)
     POP rax                   // Restore integer result.