summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-06-25 05:08:53 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-06-25 05:08:53 +0000
commitf7cf2dcc9be4f5a553d72a0ee77d12e9b8f87d57 (patch)
tree69789ba2444d1552454cdba7256059cd92ee4c57
parentb8536f958cbe5da51862adeb688b61e80013d716 (diff)
parent2eb85431142f5f45f5f5b3dd67dad42bb1dc4a8a (diff)
downloadart-f7cf2dcc9be4f5a553d72a0ee77d12e9b8f87d57.tar.gz
art-f7cf2dcc9be4f5a553d72a0ee77d12e9b8f87d57.tar.bz2
art-f7cf2dcc9be4f5a553d72a0ee77d12e9b8f87d57.zip
am 2eb85431: Merge "ART: Fix arm32 instrumentation exit stub" into mnc-dev
* commit '2eb85431142f5f45f5f5b3dd67dad42bb1dc4a8a': ART: Fix arm32 instrumentation exit stub
-rw-r--r--runtime/arch/arm/quick_entrypoints_arm.S9
1 files changed, 7 insertions, 2 deletions
diff --git a/runtime/arch/arm/quick_entrypoints_arm.S b/runtime/arch/arm/quick_entrypoints_arm.S
index 5ae291a44b..d02ab14ab5 100644
--- a/runtime/arch/arm/quick_entrypoints_arm.S
+++ b/runtime/arch/arm/quick_entrypoints_arm.S
@@ -1052,9 +1052,12 @@ art_quick_instrumentation_exit:
.cfi_adjust_cfa_offset 8
.cfi_rel_offset r0, 0
.cfi_rel_offset r1, 4
- sub sp, #8 @ space for return value argument
+ vpush {d0} @ save fp return value
.cfi_adjust_cfa_offset 8
- strd r0, [sp] @ r0/r1 -> [sp] for fpr_res
+ sub sp, #8 @ space for return value argument. Note: AAPCS stack alignment is 8B, no
+ @ need to align by 16.
+ .cfi_adjust_cfa_offset 8
+ vstr d0, [sp] @ d0 -> [sp] for fpr_res
mov r2, r0 @ pass return value as gpr_res
mov r3, r1
mov r0, r9 @ pass Thread::Current
@@ -1065,6 +1068,8 @@ art_quick_instrumentation_exit:
mov r2, r0 @ link register saved by instrumentation
mov lr, r1 @ r1 is holding link register if we're to bounce to deoptimize
+ vpop {d0} @ restore fp return value
+ .cfi_adjust_cfa_offset -8
pop {r0, r1} @ restore return value
.cfi_adjust_cfa_offset -8
.cfi_restore r0