diff --git a/src/compiler/codegen/GenCommon.cc b/src/compiler/codegen/GenCommon.cc
index 21f824d..7305271 100644
--- a/src/compiler/codegen/GenCommon.cc
+++ b/src/compiler/codegen/GenCommon.cc
@@ -216,18 +216,26 @@
   int rTgt = loadHelper(cUnit, helperOffset);
 #endif
   if (arg0.wide == 0) {
-    loadValueDirectFixed(cUnit, arg0, rARG0);
+    loadValueDirectFixed(cUnit, arg0, arg0.fp ? rFARG0 : rARG0);
     if (arg1.wide == 0) {
+#if defined(TARGET_MIPS)
+      loadValueDirectFixed(cUnit, arg1, arg1.fp ? rFARG2 : rARG1);
+#else
       loadValueDirectFixed(cUnit, arg1, rARG1);
+#endif
     } else {
+#if defined(TARGET_MIPS)
+      loadValueDirectWideFixed(cUnit, arg1, arg1.fp ? rFARG2 : rARG1, arg1.fp ? rFARG3 : rARG2);
+#else
       loadValueDirectWideFixed(cUnit, arg1, rARG1, rARG2);
+#endif
     }
   } else {
-    loadValueDirectWideFixed(cUnit, arg0, rARG0, rARG1);
+    loadValueDirectWideFixed(cUnit, arg0, arg0.fp ? rFARG0 : rARG0, arg0.fp ? rFARG1 : rARG1);
     if (arg1.wide == 0) {
-      loadValueDirectFixed(cUnit, arg1, rARG2);
+      loadValueDirectFixed(cUnit, arg1, arg1.fp ? rFARG2 : rARG2);
     } else {
-      loadValueDirectWideFixed(cUnit, arg1, rARG2, rARG3);
+      loadValueDirectWideFixed(cUnit, arg1, arg1.fp ? rFARG2 : rARG2, arg1.fp ? rFARG3 : rARG3);
     }
   }
   oatClobberCalleeSave(cUnit);
@@ -1400,7 +1408,7 @@
       // InitializeTypeFromCode(idx, method)
       callRuntimeHelperImmReg(cUnit, ENTRYPOINT_OFFSET(pInitializeTypeFromCode), type_idx, rARG1,
                               true);
-      opRegCopy(cUnit, classReg, rARG0); // Align usage with fast path
+      opRegCopy(cUnit, classReg, rRET0); // Align usage with fast path
       // Rejoin code paths
       LIR* hopTarget = newLIR0(cUnit, kPseudoTargetLabel);
       hopBranch->target = (LIR*)hopTarget;
@@ -2363,9 +2371,9 @@
    */
   oatFlushAllRegs(cUnit);   /* Send everything to home location */
   if (rlSrc.wide) {
-    loadValueDirectWideFixed(cUnit, rlSrc, rARG0, rARG1);
+    loadValueDirectWideFixed(cUnit, rlSrc, rlSrc.fp ? rFARG0 : rARG0, rlSrc.fp ? rFARG1 : rARG1);
   } else {
-    loadValueDirectFixed(cUnit, rlSrc, rARG0);
+    loadValueDirectFixed(cUnit, rlSrc, rlSrc.fp ? rFARG0 : rARG0);
   }
   callRuntimeHelperRegLocation(cUnit, funcOffset, rlSrc, false);
   if (rlDest.wide) {
diff --git a/src/compiler/codegen/arm/ArmLIR.h b/src/compiler/codegen/arm/ArmLIR.h
index a40df20..1da567e 100644
--- a/src/compiler/codegen/arm/ArmLIR.h
+++ b/src/compiler/codegen/arm/ArmLIR.h
@@ -251,6 +251,10 @@
 #define rARG1 r1
 #define rARG2 r2
 #define rARG3 r3
+#define rFARG0 r0
+#define rFARG1 r1
+#define rFARG2 r2
+#define rFARG3 r3
 #define rRET0 r0
 #define rRET1 r1
 #define rINVOKE_TGT rLR
diff --git a/src/compiler/codegen/mips/FP/MipsFP.cc b/src/compiler/codegen/mips/FP/MipsFP.cc
index 437f1ed..990c71f 100644
--- a/src/compiler/codegen/mips/FP/MipsFP.cc
+++ b/src/compiler/codegen/mips/FP/MipsFP.cc
@@ -197,11 +197,11 @@
   oatFlushAllRegs(cUnit);
   oatLockCallTemps(cUnit);
   if (wide) {
-    loadValueDirectWideFixed(cUnit, rlSrc1, r_FARG0, r_FARG1);
-    loadValueDirectWideFixed(cUnit, rlSrc2, r_FARG2, r_FARG3);
+    loadValueDirectWideFixed(cUnit, rlSrc1, rFARG0, rFARG1);
+    loadValueDirectWideFixed(cUnit, rlSrc2, rFARG2, rFARG3);
   } else {
-    loadValueDirectFixed(cUnit, rlSrc1, r_FARG0);
-    loadValueDirectFixed(cUnit, rlSrc2, r_FARG2);
+    loadValueDirectFixed(cUnit, rlSrc1, rFARG0);
+    loadValueDirectFixed(cUnit, rlSrc2, rFARG2);
   }
   int rTgt = loadHelper(cUnit, offset);
   // NOTE: not a safepoint
diff --git a/src/compiler/codegen/mips/MipsLIR.h b/src/compiler/codegen/mips/MipsLIR.h
index 5077c9f..4b7da55 100644
--- a/src/compiler/codegen/mips/MipsLIR.h
+++ b/src/compiler/codegen/mips/MipsLIR.h
@@ -301,6 +301,10 @@
 #define rARG1 r_ARG1
 #define rARG2 r_ARG2
 #define rARG3 r_ARG3
+#define rFARG0 r_FARG0
+#define rFARG1 r_FARG1
+#define rFARG2 r_FARG2
+#define rFARG3 r_FARG3
 #define rRET0 r_RESULT0
 #define rRET1 r_RESULT1
 #define rINVOKE_TGT r_T9
diff --git a/src/compiler/codegen/x86/X86LIR.h b/src/compiler/codegen/x86/X86LIR.h
index d3e3da8..8ad014a 100644
--- a/src/compiler/codegen/x86/X86LIR.h
+++ b/src/compiler/codegen/x86/X86LIR.h
@@ -238,6 +238,10 @@
 #define rARG1 rCX
 #define rARG2 rDX
 #define rARG3 rBX
+#define rFARG0 rAX
+#define rFARG1 rCX
+#define rFARG2 rDX
+#define rFARG3 rBX
 #define rRET0 rAX
 #define rRET1 rDX
 #define rINVOKE_TGT rAX
diff --git a/src/oat/runtime/mips/runtime_support_mips.S b/src/oat/runtime/mips/runtime_support_mips.S
index eafd380..349e802 100644
--- a/src/oat/runtime/mips/runtime_support_mips.S
+++ b/src/oat/runtime/mips/runtime_support_mips.S
@@ -353,11 +353,11 @@
     sw    $t0, 16($sp)                    # pass $sp
     addiu $sp, $sp, 16                    # release out args
     move  $a0, $v0                        # save target Method*
-    move  $t0, $v1                        # save $v0->code_
+    move  $t9, $v1                        # save $v0->code_
     RESTORE_REF_AND_ARGS_CALLEE_SAVE_FRAME
     beqz  $v0, 1f
     nop
-    jr    $t0
+    jr    $t9
     nop
 1:
     DELIVER_PENDING_EXCEPTION
@@ -389,13 +389,13 @@
     move     $a0, rSELF       # pass Thread::Current
     jal      artWorkAroundAppJniBugs  # (Thread*, $sp)
     move     $a1, $sp         # pass $sp
-    move     $t0, $v0         # save target address
+    move     $t9, $v0         # save target address
     lw       $a0, 12($sp)
     lw       $a1, 16($sp)
     lw       $a2, 20($sp)
     lw       $a3, 24($sp)
     lw       $ra, 28($sp)
-    jr       $t0              # tail call into JNI routine
+    jr       $t9              # tail call into JNI routine
     addiu    $sp, $sp, 32
 
     .global art_handle_fill_data_from_code
diff --git a/src/oat/runtime/support_proxy.cc b/src/oat/runtime/support_proxy.cc
index 3d0c1c8..7ece784 100644
--- a/src/oat/runtime/support_proxy.cc
+++ b/src/oat/runtime/support_proxy.cc
@@ -30,8 +30,8 @@
 #define ARG2_OFFSET_IN_WORDS 11 // offset to 3rd arg; skip callee saves, LR, Method* and out arg spills for OUT0 to OUT2
 #elif defined(__mips__)
 #define SP_OFFSET_IN_BYTES 8
-#define FRAME_SIZE_IN_BYTES 32u
-#define ARG2_OFFSET_IN_WORDS 8 // offset to 3rd arg; skip callee saves, LR, Method* and out arg spills for OUT0 to OUT2
+#define FRAME_SIZE_IN_BYTES 48u
+#define ARG2_OFFSET_IN_WORDS 12 // offset to 3rd arg; skip callee saves, LR, Method* and out arg spills for OUT0 to OUT2
 #elif defined(__i386__)
 #define SP_OFFSET_IN_BYTES 8
 #define FRAME_SIZE_IN_BYTES 32u
