summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorShawn Hoffman <godisgovernment@gmail.com>2010-03-23 03:30:25 +0000
committerShawn Hoffman <godisgovernment@gmail.com>2010-03-23 03:30:25 +0000
commitcf7101ef0843d2b548be390d93b4e62e698c3d79 (patch)
tree3c018f5ae86cb8e62b0984f85115d0903b6863c7 /Source
parent744167f561a23e413d536eaceebab0a81fcfeb82 (diff)
use jit64's implementation of divwux instead of always falling back to interpreter. please test for stability...tho it looks fine.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5223 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Src/HLE/HLE_OS.cpp4
-rw-r--r--Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp4
-rw-r--r--Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp2
-rw-r--r--Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp8
4 files changed, 11 insertions, 7 deletions
diff --git a/Source/Core/Core/Src/HLE/HLE_OS.cpp b/Source/Core/Core/Src/HLE/HLE_OS.cpp
index f0b5c8e9d6..b96ab8c123 100644
--- a/Source/Core/Core/Src/HLE/HLE_OS.cpp
+++ b/Source/Core/Core/Src/HLE/HLE_OS.cpp
@@ -132,6 +132,10 @@ void GetStringVA(std::string& _rOutBuffer, u32 strReg)
}
break;
+ case 'p':
+ // Override, so 64bit dolphin prints 32bit pointers, since the ppc is 32bit :)
+ _rOutBuffer += StringFromFormat("%x", Parameter);
+ break;
default:
_rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter);
diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp
index fa2f6a025d..a0e7714388 100644
--- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp
+++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp
@@ -353,7 +353,6 @@ u32 CWII_IPC_HLE_Device_di::ExecuteCommand(u32 _BufferIn, u32 _BufferInSize, u32
}
break;
-// Apparently Dx commands have never been seen in dolphin? *shrug*
case DVDLowReadDvd:
ERROR_LOG(WII_IPC_DVD, "DVDLowReadDvd");
break;
@@ -371,7 +370,8 @@ u32 CWII_IPC_HLE_Device_di::ExecuteCommand(u32 _BufferIn, u32 _BufferInSize, u32
break;
case DVDLowReadDiskBca:
- ERROR_LOG(WII_IPC_DVD, "DVDLowReadDiskBca");
+ WARN_LOG(WII_IPC_DVD, "DVDLowReadDiskBca");
+ Memory::Write_U32(1, _BufferOut + 0x30);
break;
case DVDLowRequestDiscStatus:
diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp
index 09fb52a45a..75fc860429 100644
--- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp
+++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp
@@ -479,7 +479,7 @@ void divwx(UGeckoInstruction _inst)
{
if (_inst.OE)
PanicAlert("OE: divwx");
- //else PanicAlert("Div by zero", "divwux");
+ //else PanicAlert("Div by zero", "divwx");
}
else
m_GPR[_inst.RD] = (u32)(a / b);
diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp
index 13a5a24c28..bd48e0df1d 100644
--- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp
+++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp
@@ -557,10 +557,10 @@ void Jit64::mulhwux(UGeckoInstruction inst)
}
}
-// skipped some of the special handling in here - if we get crashes, let the interpreter handle this op
-void Jit64::divwux(UGeckoInstruction inst) {
- Default(inst); return;
-
+void Jit64::divwux(UGeckoInstruction inst)
+{
+ INSTRUCTION_START
+ JITDISABLE(Integer)
int a = inst.RA, b = inst.RB, d = inst.RD;
gpr.FlushLockX(EDX);
gpr.Lock(a, b, d);