Merge pull request #6604 from lioncash/dcbz_l

Interpreter_LoadStore: Generate a program exception if dcbz_l is executed when HID2[LCE] is zero
This commit is contained in:
Markus Wick 2018-04-09 23:04:09 +02:00 committed by GitHub
commit 0bfeb37a1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 0 deletions

View File

@ -30,6 +30,11 @@ void GenerateDSIException(u32 address)
PowerPC::ppcState.Exceptions |= EXCEPTION_DSI; PowerPC::ppcState.Exceptions |= EXCEPTION_DSI;
PowerPC::ppcState.spr[SPR_DAR] = address; PowerPC::ppcState.spr[SPR_DAR] = address;
} }
void GenerateProgramException()
{
PowerPC::ppcState.Exceptions |= EXCEPTION_PROGRAM;
}
} }
u32 Interpreter::Helper_Get_EA(const UGeckoInstruction inst) u32 Interpreter::Helper_Get_EA(const UGeckoInstruction inst)
@ -526,6 +531,12 @@ void Interpreter::dcbz(UGeckoInstruction inst)
void Interpreter::dcbz_l(UGeckoInstruction inst) void Interpreter::dcbz_l(UGeckoInstruction inst)
{ {
if (!HID2.LCE)
{
GenerateProgramException();
return;
}
const u32 address = Helper_Get_EA_X(inst); const u32 address = Helper_Get_EA_X(inst);
if (!HID0.DCE) if (!HID0.DCE)