mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-31 10:09:36 -06:00
Commit r5970 part #1: Fix what seems to be a bug in PowerPC instruction RFI: the wrong bit was cleared in MSR
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5972 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -117,7 +117,7 @@ void rfi(UGeckoInstruction _inst)
|
|||||||
const int mask = 0x87C0FFFF;
|
const int mask = 0x87C0FFFF;
|
||||||
MSR = (MSR & ~mask) | (SRR1 & mask);
|
MSR = (MSR & ~mask) | (SRR1 & mask);
|
||||||
//MSR[13] is set to 0.
|
//MSR[13] is set to 0.
|
||||||
MSR &= 0xFFFDFFFF;
|
MSR &= 0xFFFBFFFF;
|
||||||
// Here we should check if there are pending exceptions, and if their corresponding enable bits are set
|
// Here we should check if there are pending exceptions, and if their corresponding enable bits are set
|
||||||
// if above is true, we'd do:
|
// if above is true, we'd do:
|
||||||
//PowerPC::CheckExceptions();
|
//PowerPC::CheckExceptions();
|
||||||
|
@ -66,7 +66,7 @@ void Jit64::rfi(UGeckoInstruction inst)
|
|||||||
AND(32, R(ECX), Imm32(mask));
|
AND(32, R(ECX), Imm32(mask));
|
||||||
OR(32, R(EAX), R(ECX));
|
OR(32, R(EAX), R(ECX));
|
||||||
// MSR &= 0xFFFDFFFF; //TODO: VERIFY
|
// MSR &= 0xFFFDFFFF; //TODO: VERIFY
|
||||||
AND(32, R(EAX), Imm32(0xFFFDFFFF));
|
AND(32, R(EAX), Imm32(0xFFFBFFFF));
|
||||||
MOV(32, M(&MSR), R(EAX));
|
MOV(32, M(&MSR), R(EAX));
|
||||||
// NPC = SRR0;
|
// NPC = SRR0;
|
||||||
MOV(32, R(EAX), M(&SRR0));
|
MOV(32, R(EAX), M(&SRR0));
|
||||||
|
Reference in New Issue
Block a user