summaryrefslogtreecommitdiffstats
path: root/runtime/arch/x86_64/quick_entrypoints_x86_64.S
diff options
context:
space:
mode:
authorSebastien Hertz <shertz@google.com>2014-11-17 12:46:27 +0100
committerSebastien Hertz <shertz@google.com>2014-11-17 17:21:24 +0100
commit32b12f8ae491e1acfeaee334e9a30c6c0a232072 (patch)
tree62742b8378758ce2087edd750f88397958aa425f /runtime/arch/x86_64/quick_entrypoints_x86_64.S
parentd45f76e59bf8342491ca02d64721537e06c79f43 (diff)
downloadart-32b12f8ae491e1acfeaee334e9a30c6c0a232072.tar.gz
art-32b12f8ae491e1acfeaee334e9a30c6c0a232072.tar.bz2
art-32b12f8ae491e1acfeaee334e9a30c6c0a232072.zip
Fix art_quick_instrumentation_entry stub for x86/x86_64
Fixes bad stack offset for x86 where we read the return pc from an incorrect location. Fixes bad register for x86_64. The return pc is the 4th argument of the called C function. It must be passed in rcx instead of r8 (which is used for 5th argument). Bug: 18170596 Change-Id: Idb521d2f6da415448fa61acf8b7d21076822830f
Diffstat (limited to 'runtime/arch/x86_64/quick_entrypoints_x86_64.S')
-rw-r--r--runtime/arch/x86_64/quick_entrypoints_x86_64.S2
1 files changed, 1 insertions, 1 deletions
diff --git a/runtime/arch/x86_64/quick_entrypoints_x86_64.S b/runtime/arch/x86_64/quick_entrypoints_x86_64.S
index bed7238b09..9d3a8cc713 100644
--- a/runtime/arch/x86_64/quick_entrypoints_x86_64.S
+++ b/runtime/arch/x86_64/quick_entrypoints_x86_64.S
@@ -1446,7 +1446,7 @@ DEFINE_FUNCTION art_quick_instrumentation_entry
movq %rdi, %r12 // Preserve method pointer in a callee-save.
movq %gs:THREAD_SELF_OFFSET, %rdx // Pass thread.
- movq FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE-8(%rsp), %r8 // Pass return PC.
+ movq FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE-8(%rsp), %rcx // Pass return PC.
call SYMBOL(artInstrumentationMethodEntryFromCode) // (Method*, Object*, Thread*, LR)