From 618fdff93cec53c0ed234898f2d42f38a25e3b66 Mon Sep 17 00:00:00 2001 From: Lazar Trsic Date: Wed, 10 Jun 2015 16:05:46 +0200 Subject: [MIPS] Fix method tracing for mips64 Reg $v0 is being clobbered on using SETUP_REFS_ONLY_CALLEE_SAVE_FRAME inside instrumentation_exit() trampoline, when falling through from instrumentation_entry(). To fix, use $t1 for ArtMethod* fetching inside SETUP_ macros. Also fix some unrelated comment errors. Bug: 21555893 (cherry picked from commit 84bc06e30ba12c3ff07e577c52b63b9df162af7e) Change-Id: I4ab169f75988c4f0d924416a30196f21c1a043a3 --- runtime/arch/mips/quick_entrypoints_mips.S | 2 +- runtime/arch/mips64/quick_entrypoints_mips64.S | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'runtime/arch') diff --git a/runtime/arch/mips/quick_entrypoints_mips.S b/runtime/arch/mips/quick_entrypoints_mips.S index f1e6edb..d148747 100644 --- a/runtime/arch/mips/quick_entrypoints_mips.S +++ b/runtime/arch/mips/quick_entrypoints_mips.S @@ -380,7 +380,7 @@ END art_quick_do_long_jump /* * Called by managed code, saves most registers (forms basis of long jump context) and passes * the bottom of the stack. artDeliverExceptionFromCode will place the callee save Method* at - * the bottom of the thread. On entry r0 holds Throwable* + * the bottom of the thread. On entry a0 holds Throwable* */ ENTRY art_quick_deliver_exception SETUP_SAVE_ALL_CALLEE_SAVE_FRAME diff --git a/runtime/arch/mips64/quick_entrypoints_mips64.S b/runtime/arch/mips64/quick_entrypoints_mips64.S index 227fe7e..bdd8a30 100644 --- a/runtime/arch/mips64/quick_entrypoints_mips64.S +++ b/runtime/arch/mips64/quick_entrypoints_mips64.S @@ -87,11 +87,11 @@ s.d $f24, 8($sp) # load appropriate callee-save-method - ld $v0, %got(_ZN3art7Runtime9instance_E)($gp) - ld $v0, 0($v0) + ld $t1, %got(_ZN3art7Runtime9instance_E)($gp) + ld $t1, 0($t1) THIS_LOAD_REQUIRES_READ_BARRIER - ld $v0, RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET($v0) - sd $v0, 0($sp) # Place ArtMethod* at bottom of stack. + ld $t1, RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET($t1) + sd $t1, 0($sp) # Place ArtMethod* at bottom of stack. sd $sp, THREAD_TOP_QUICK_FRAME_OFFSET(rSELF) # Place sp in Thread::Current()->top_quick_frame. .endm @@ -130,11 +130,11 @@ sd $s2, 8($sp) .cfi_rel_offset 18, 8 # load appropriate callee-save-method - ld $v0, %got(_ZN3art7Runtime9instance_E)($gp) - ld $v0, 0($v0) + ld $t1, %got(_ZN3art7Runtime9instance_E)($gp) + ld $t1, 0($t1) THIS_LOAD_REQUIRES_READ_BARRIER - ld $v0, RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET($v0) - sd $v0, 0($sp) # Place Method* at bottom of stack. + ld $t1, RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET($t1) + sd $t1, 0($sp) # Place Method* at bottom of stack. sd $sp, THREAD_TOP_QUICK_FRAME_OFFSET(rSELF) # Place sp in Thread::Current()->top_quick_frame. .endm @@ -253,11 +253,11 @@ .macro SETUP_REFS_AND_ARGS_CALLEE_SAVE_FRAME SETUP_REFS_AND_ARGS_CALLEE_SAVE_FRAME_INTERNAL # load appropriate callee-save-method - ld $v0, %got(_ZN3art7Runtime9instance_E)($gp) - ld $v0, 0($v0) + ld $t1, %got(_ZN3art7Runtime9instance_E)($gp) + ld $t1, 0($t1) THIS_LOAD_REQUIRES_READ_BARRIER - ld $v0, RUNTIME_REFS_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET($v0) - sd $v0, 0($sp) # Place Method* at bottom of stack. + ld $t1, RUNTIME_REFS_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET($t1) + sd $t1, 0($sp) # Place Method* at bottom of stack. sd $sp, THREAD_TOP_QUICK_FRAME_OFFSET(rSELF) # Place sp in Thread::Current()->top_quick_frame. .endm @@ -442,7 +442,7 @@ END art_quick_do_long_jump * Called by managed code, saves most registers (forms basis of long jump * context) and passes the bottom of the stack. * artDeliverExceptionFromCode will place the callee save Method* at - * the bottom of the thread. On entry v0 holds Throwable* + * the bottom of the thread. On entry a0 holds Throwable* */ ENTRY art_quick_deliver_exception SETUP_SAVE_ALL_CALLEE_SAVE_FRAME -- cgit v1.1