diff options
author | Sebastien Hertz <shertz@google.com> | 2014-11-17 12:46:27 +0100 |
---|---|---|
committer | Sebastien Hertz <shertz@google.com> | 2014-11-17 17:21:24 +0100 |
commit | 32b12f8ae491e1acfeaee334e9a30c6c0a232072 (patch) | |
tree | 62742b8378758ce2087edd750f88397958aa425f /runtime/arch/x86_64/quick_entrypoints_x86_64.S | |
parent | d45f76e59bf8342491ca02d64721537e06c79f43 (diff) | |
download | art-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.S | 2 |
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) |