summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/mips/Assemble.cc
diff options
context:
space:
mode:
author jeffhao <jeffhao@google.com> 2012-10-12 17:03:32 -0700
committer jeffhao <jeffhao@google.com> 2012-10-12 17:03:32 -0700
commitfa147e22a73c6df166b08a2f71f9c9b52b09d17c (patch)
treed50b1c6b89de4fcc4473f2aa2defe3bbc0f8289c /src/compiler/codegen/mips/Assemble.cc
parent4fe0ef28ed58502a3652e827f5931df0b45cf39c (diff)
Numerous fixes to MIPS. Basic oatexec works.
- Fixed reversed base and destination reg in genConstString - Changed compiler to use T9 to hold address to jump to - Fixed compilation of instruction getting current PC - Prevented T9 from being used as a compiler temp - Fixed loadBaseDispBody for long form single loads - Fixed stack setup for SaveAll callee methods to save rSELF & rSUSPEND - Added .cpload directive to assembly to regenerate $gp when overwritten - Fixed passing of extra arguments on the stack to account for space reserved for $a0-$a3 - Fixed resolution trampoline to properly setup and restore stack - Created mips stubs for interface trampoline and unresolved direct method trampoline Change-Id: I63a3fd0366bdfabdebebf58ec4b8bc9443cec355
Diffstat (limited to 'src/compiler/codegen/mips/Assemble.cc')
-rw-r--r--src/compiler/codegen/mips/Assemble.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/compiler/codegen/mips/Assemble.cc b/src/compiler/codegen/mips/Assemble.cc
index 8c906ccdb3..f19c1f1e29 100644
--- a/src/compiler/codegen/mips/Assemble.cc
+++ b/src/compiler/codegen/mips/Assemble.cc
@@ -400,7 +400,7 @@ MipsEncodingMap EncodingMap[kMipsLast] = {
ENCODING_MAP(kMipsDelta, 0x27e00000,
kFmtBitBlt, 20, 16, kFmtBitBlt, 15, 0, kFmtUnused, 15, 0,
kFmtUnused, -1, -1, IS_QUAD_OP | REG_DEF0 | REG_USE_LR |
- NEEDS_FIXUP, "addiu", "!0r,r_ra,0x!1h(!1d)", 4),
+ NEEDS_FIXUP, "addiu", "!0r,ra,0x!1h(!1d)", 4),
ENCODING_MAP(kMipsDeltaHi, 0x3C000000,
kFmtBitBlt, 20, 16, kFmtBitBlt, 15, 0, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, IS_QUAD_OP | REG_DEF0 | NEEDS_FIXUP,
@@ -409,10 +409,10 @@ MipsEncodingMap EncodingMap[kMipsLast] = {
kFmtBlt5_2, 16, 21, kFmtBitBlt, 15, 0, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, IS_QUAD_OP | REG_DEF0_USE0 | NEEDS_FIXUP,
"ori", "!0r,!0r,0x!1h(!1d)", 4),
- ENCODING_MAP(kMipsCurrPC, 0x04110020,
+ ENCODING_MAP(kMipsCurrPC, 0x04110001,
kFmtUnused, -1, -1, kFmtUnused, -1, -1, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, NO_OPERAND | IS_BRANCH | REG_DEF_LR,
- "pc2ra", "; r_ra <- .+8", 4),
+ "addiu", "ra,pc,8", 4),
ENCODING_MAP(kMipsSync, 0x0000000f,
kFmtBitBlt, 10, 6, kFmtUnused, -1, -1, kFmtUnused, -1, -1,
kFmtUnused, -1, -1, IS_UNARY_OP,