diff options
author | Jeff Hao <jeffhao@google.com> | 2014-07-22 18:38:42 -0700 |
---|---|---|
committer | Jeff Hao <jeffhao@google.com> | 2014-07-22 18:40:11 -0700 |
commit | cf2e7b0621dfe7fcacd56555dffabab65d1130e7 (patch) | |
tree | 9d39b8b6d5711e6ecddb2aeab8f0af759e227cdb /runtime | |
parent | 2ac30da089ed9f2a27c177a972f4d67754454637 (diff) | |
download | art-cf2e7b0621dfe7fcacd56555dffabab65d1130e7.zip art-cf2e7b0621dfe7fcacd56555dffabab65d1130e7.tar.gz art-cf2e7b0621dfe7fcacd56555dffabab65d1130e7.tar.bz2 |
Fix x86 instrumentation exit entrypoint and trace size limit.
The x86 instruction movd only copies a 32-bit value when used with a
memory location. movsd properly copies 64-bits.
Bug: 16386215
Change-Id: Ia59b2c2af72ce5202c7b62413687aedb48cfd25e
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/arch/x86/quick_entrypoints_x86.S | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S index 68f46ad..3d87297 100644 --- a/runtime/arch/x86/quick_entrypoints_x86.S +++ b/runtime/arch/x86/quick_entrypoints_x86.S @@ -1277,14 +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) - movd %xmm0, (%esp) + movsd %xmm0, (%esp) PUSH edx // Save gpr return value. PUSH eax - subl LITERAL(8), %esp // Align stack - movd %xmm0, (%esp) - subl LITERAL(8), %esp // Pass float return value. - CFI_ADJUST_CFA_OFFSET(8) - movd %xmm0, (%esp) + subl LITERAL(16), %esp // Align stack + CFI_ADJUST_CFA_OFFSET(16) + movsd %xmm0, (%esp) // Pass float return value. PUSH edx // Pass gpr return value. PUSH eax PUSH ecx // Pass SP. @@ -1299,7 +1297,7 @@ DEFINE_FUNCTION art_quick_instrumentation_exit // (ebx is pretending to be our LR). POP eax // Restore gpr return value. POP edx - movd (%esp), %xmm0 // Restore fpr return value. + movsd (%esp), %xmm0 // Restore fpr return value. addl LITERAL(8), %esp CFI_ADJUST_CFA_OFFSET(-8) RESTORE_REF_ONLY_CALLEE_SAVE_FRAME |