summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorJeff Hao <jeffhao@google.com>2014-07-22 18:38:42 -0700
committerJeff Hao <jeffhao@google.com>2014-07-22 18:40:11 -0700
commitcf2e7b0621dfe7fcacd56555dffabab65d1130e7 (patch)
tree9d39b8b6d5711e6ecddb2aeab8f0af759e227cdb /runtime
parent2ac30da089ed9f2a27c177a972f4d67754454637 (diff)
downloadart-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.S12
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