mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-31 00:32:53 +00:00
Interpreter_LoadStore: Update the DAR if a DSI exception occurs in eciwx and ecowx
Also once a DSI exception occurs, execution is supposed to leave the instruction immediately. It doesn't finish execution.
This commit is contained in:
parent
a013638dcb
commit
de0ed1a5fb
@ -24,6 +24,12 @@ void GenerateAlignmentException(u32 address)
|
||||
PowerPC::ppcState.Exceptions |= EXCEPTION_ALIGNMENT;
|
||||
PowerPC::ppcState.spr[SPR_DAR] = address;
|
||||
}
|
||||
|
||||
void GenerateDSIException(u32 address)
|
||||
{
|
||||
PowerPC::ppcState.Exceptions |= EXCEPTION_DSI;
|
||||
PowerPC::ppcState.spr[SPR_DAR] = address;
|
||||
}
|
||||
}
|
||||
|
||||
u32 Interpreter::Helper_Get_EA(const UGeckoInstruction inst)
|
||||
@ -431,7 +437,8 @@ void Interpreter::eciwx(UGeckoInstruction inst)
|
||||
|
||||
if (!(PowerPC::ppcState.spr[SPR_EAR] & 0x80000000))
|
||||
{
|
||||
PowerPC::ppcState.Exceptions |= EXCEPTION_DSI;
|
||||
GenerateDSIException(EA);
|
||||
return;
|
||||
}
|
||||
|
||||
if (EA & 3)
|
||||
@ -449,7 +456,8 @@ void Interpreter::ecowx(UGeckoInstruction inst)
|
||||
|
||||
if (!(PowerPC::ppcState.spr[SPR_EAR] & 0x80000000))
|
||||
{
|
||||
PowerPC::ppcState.Exceptions |= EXCEPTION_DSI;
|
||||
GenerateDSIException(EA);
|
||||
return;
|
||||
}
|
||||
|
||||
if (EA & 3)
|
||||
|
Loading…
x
Reference in New Issue
Block a user