summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2008-08-13 21:35:03 +0000
committerhrydgard <hrydgard@gmail.com>2008-08-13 21:35:03 +0000
commite4792fafaf04e5285ca469cfac7d2c6860280305 (patch)
treeec0677299985ab8c14aa2636343ae9bfcc881e18 /Source/Core
parent2b8a85ac5a76f4d02bbf2b132fa9c43cd964b783 (diff)
make mtmsr end jit blocks - makes some wii homebrew go a little bit further
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@192 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/Boot/Boot.cpp4
-rw-r--r--Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp2
-rw-r--r--Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp7
-rw-r--r--Source/Core/Core/Src/PowerPC/PPCTables.cpp2
4 files changed, 9 insertions, 6 deletions
diff --git a/Source/Core/Core/Src/Boot/Boot.cpp b/Source/Core/Core/Src/Boot/Boot.cpp
index 507b31da8d..3a1bc2e20e 100644
--- a/Source/Core/Core/Src/Boot/Boot.cpp
+++ b/Source/Core/Core/Src/Boot/Boot.cpp
@@ -282,9 +282,9 @@ bool CBoot::EmulatedBIOS_Wii(bool _bDebug)
Memory::Write_U16(0x0000, 0x000030e0); // PADInit
// clear exception handler
- for (int i=0x3000; i<=0x3038; i+=4)
+ for (int i = 0x3000; i <= 0x3038; i += 4)
{
- Memory::Write_U32(0x00000000, i);
+ Memory::Write_U32(0x00000000, 0x80000000 + i);
}
// app
diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp
index 70cd3ad61b..4755e7433e 100644
--- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp
+++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp
@@ -58,7 +58,7 @@ namespace Jit64
MOV(32, R(ECX), M(&SRR1));
AND(32, R(EAX), Imm32(~mask));
AND(32, R(ECX), Imm32(mask));
- OR(32, R(EAX), R(ECX));
+ OR(32, R(EAX), R(ECX));
// MSR &= 0xFFFDFFFF; //TODO: VERIFY
AND(32, R(EAX), Imm32(0xFFFDFFFF));
MOV(32, M(&MSR), R(EAX));
diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp
index fa8e4f2164..4ce970def6 100644
--- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp
+++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp
@@ -87,7 +87,7 @@ namespace Jit64
// fall through
default:
gpr.Lock(d);
- gpr.LoadToX64(d,false);
+ gpr.LoadToX64(d, false);
MOV(32, gpr.R(d), M(&PowerPC::ppcState.spr[iIndex]));
gpr.UnlockAll();
break;
@@ -97,8 +97,11 @@ namespace Jit64
void mtmsr(UGeckoInstruction inst)
{
INSTRUCTION_START;
- gpr.LoadToX64(inst.RS);
+ gpr.LoadToX64(inst.RS, true, false);
MOV(32, M(&MSR), gpr.R(inst.RS));
+ gpr.Flush(FLUSH_ALL);
+ fpr.Flush(FLUSH_ALL);
+ WriteExit(js.compilerPC + 4, 0);
}
void mfmsr(UGeckoInstruction inst)
diff --git a/Source/Core/Core/Src/PowerPC/PPCTables.cpp b/Source/Core/Core/Src/PowerPC/PPCTables.cpp
index 88907e78c5..6dd9ceb221 100644
--- a/Source/Core/Core/Src/PowerPC/PPCTables.cpp
+++ b/Source/Core/Core/Src/PowerPC/PPCTables.cpp
@@ -360,7 +360,7 @@ GekkoOPTemplate table31[] =
{19, CInterpreter::mfcr, Jit64::Default, {"mfcr", OPTYPE_SYSTEM, 0}},
{83, CInterpreter::mfmsr, Jit64::mfmsr, {"mfmsr", OPTYPE_SYSTEM, 0}},
{144, CInterpreter::mtcrf, Jit64::Default, {"mtcrf", OPTYPE_SYSTEM, 0}},
- {146, CInterpreter::mtmsr, Jit64::mtmsr, {"mtmsr", OPTYPE_SYSTEM, 0}},
+ {146, CInterpreter::mtmsr, Jit64::mtmsr, {"mtmsr", OPTYPE_SYSTEM, FL_ENDBLOCK}},
{210, CInterpreter::mtsr, Jit64::Default, {"mtsr", OPTYPE_SYSTEM, 0}},
{242, CInterpreter::mtsrin, Jit64::Default, {"mtsrin", OPTYPE_SYSTEM, 0}},
{339, CInterpreter::mfspr, Jit64::mfspr, {"mfspr", OPTYPE_SYSTEM, 0}},