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
This commit is contained in:
parent
744167f561
commit
cf7101ef08
|
@ -132,6 +132,10 @@ void GetStringVA(std::string& _rOutBuffer, u32 strReg)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
// Override, so 64bit dolphin prints 32bit pointers, since the ppc is 32bit :)
|
||||||
|
_rOutBuffer += StringFromFormat("%x", Parameter);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
_rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter);
|
_rOutBuffer += StringFromFormat(ArgumentBuffer, Parameter);
|
||||||
|
|
|
@ -353,7 +353,6 @@ u32 CWII_IPC_HLE_Device_di::ExecuteCommand(u32 _BufferIn, u32 _BufferInSize, u32
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Apparently Dx commands have never been seen in dolphin? *shrug*
|
|
||||||
case DVDLowReadDvd:
|
case DVDLowReadDvd:
|
||||||
ERROR_LOG(WII_IPC_DVD, "DVDLowReadDvd");
|
ERROR_LOG(WII_IPC_DVD, "DVDLowReadDvd");
|
||||||
break;
|
break;
|
||||||
|
@ -371,7 +370,8 @@ u32 CWII_IPC_HLE_Device_di::ExecuteCommand(u32 _BufferIn, u32 _BufferInSize, u32
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DVDLowReadDiskBca:
|
case DVDLowReadDiskBca:
|
||||||
ERROR_LOG(WII_IPC_DVD, "DVDLowReadDiskBca");
|
WARN_LOG(WII_IPC_DVD, "DVDLowReadDiskBca");
|
||||||
|
Memory::Write_U32(1, _BufferOut + 0x30);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DVDLowRequestDiscStatus:
|
case DVDLowRequestDiscStatus:
|
||||||
|
|
|
@ -479,7 +479,7 @@ void divwx(UGeckoInstruction _inst)
|
||||||
{
|
{
|
||||||
if (_inst.OE)
|
if (_inst.OE)
|
||||||
PanicAlert("OE: divwx");
|
PanicAlert("OE: divwx");
|
||||||
//else PanicAlert("Div by zero", "divwux");
|
//else PanicAlert("Div by zero", "divwx");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_GPR[_inst.RD] = (u32)(a / b);
|
m_GPR[_inst.RD] = (u32)(a / b);
|
||||||
|
|
|
@ -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)
|
||||||
void Jit64::divwux(UGeckoInstruction inst) {
|
{
|
||||||
Default(inst); return;
|
INSTRUCTION_START
|
||||||
|
JITDISABLE(Integer)
|
||||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||||
gpr.FlushLockX(EDX);
|
gpr.FlushLockX(EDX);
|
||||||
gpr.Lock(a, b, d);
|
gpr.Lock(a, b, d);
|
||||||
|
|
Loading…
Reference in New Issue