diff options
| author | 2012-10-18 18:24:15 -0700 | |
|---|---|---|
| committer | 2012-10-18 18:24:15 -0700 | |
| commit | fc6a30e2fa8f0d44e6c95bbeb5deca4b499f67ce (patch) | |
| tree | 71bc7549ac42799a5625bfb9c228c499e6ceb4b4 /src/compiler/codegen | |
| parent | 2e92fd62b8b1e3a14be4642d4e77a022d863a94e (diff) | |
More MIPS fixes. Most basic tests pass.
IntMath works now. The only basic tests that aren't working are
ReferenceMap and StackWalk.
In this change:
- Fixed argument passing for compare float/double.
- Set method stubs for long multiply/divide/remainder.
- Store gp value on stack and reload after function call to preserve
value for exception delivery.
- Fixed argument passing to artThrowStackOverflowFromCode.
- Fixed assembly for unsigned shift right long.
Change-Id: I6e77454905c3620c9cfd1c089200a8dbe530df2e
Diffstat (limited to 'src/compiler/codegen')
| -rw-r--r-- | src/compiler/codegen/mips/FP/MipsFP.cc | 8 | ||||
| -rw-r--r-- | src/compiler/codegen/mips/MipsLIR.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/codegen/mips/FP/MipsFP.cc b/src/compiler/codegen/mips/FP/MipsFP.cc index f121a5434f..437f1ed2d8 100644 --- a/src/compiler/codegen/mips/FP/MipsFP.cc +++ b/src/compiler/codegen/mips/FP/MipsFP.cc @@ -197,11 +197,11 @@ static bool genCmpFP(CompilationUnit *cUnit, Instruction::Code opcode, RegLocati oatFlushAllRegs(cUnit); oatLockCallTemps(cUnit); if (wide) { - loadValueDirectWideFixed(cUnit, rlSrc1, rARG0, rARG1); - loadValueDirectWideFixed(cUnit, rlSrc2, rARG2, rARG3); + loadValueDirectWideFixed(cUnit, rlSrc1, r_FARG0, r_FARG1); + loadValueDirectWideFixed(cUnit, rlSrc2, r_FARG2, r_FARG3); } else { - loadValueDirectFixed(cUnit, rlSrc1, rARG0); - loadValueDirectFixed(cUnit, rlSrc2, rARG1); + loadValueDirectFixed(cUnit, rlSrc1, r_FARG0); + loadValueDirectFixed(cUnit, rlSrc2, r_FARG2); } 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 5e5147a96b..5077c9fa40 100644 --- a/src/compiler/codegen/mips/MipsLIR.h +++ b/src/compiler/codegen/mips/MipsLIR.h @@ -141,6 +141,8 @@ namespace art { /* These are the same for both big and little endian. */ #define r_FARG0 r_F12 #define r_FARG1 r_F13 +#define r_FARG2 r_F14 +#define r_FARG3 r_F15 #define r_FRESULT0 r_F0 #define r_FRESULT1 r_F1 |