RSP: Better handle delay slot at 0xFFC
This commit is contained in:
parent
c3d6ed1a0c
commit
303af24bde
|
@ -890,11 +890,11 @@ void CompilerRSPBlock(void)
|
||||||
break;
|
break;
|
||||||
case RSPPIPELINE_DELAY_SLOT:
|
case RSPPIPELINE_DELAY_SLOT:
|
||||||
NextInstruction = RSPPIPELINE_DELAY_SLOT_DONE;
|
NextInstruction = RSPPIPELINE_DELAY_SLOT_DONE;
|
||||||
CompilePC -= 4;
|
CompilePC = (CompilePC - 4 & 0xFFC);
|
||||||
break;
|
break;
|
||||||
case RSPPIPELINE_DELAY_SLOT_EXIT:
|
case RSPPIPELINE_DELAY_SLOT_EXIT:
|
||||||
NextInstruction = RSPPIPELINE_DELAY_SLOT_EXIT_DONE;
|
NextInstruction = RSPPIPELINE_DELAY_SLOT_EXIT_DONE;
|
||||||
CompilePC -= 4;
|
CompilePC = (CompilePC - 4 & 0xFFC);
|
||||||
break;
|
break;
|
||||||
case RSPPIPELINE_FINISH_SUB_BLOCK:
|
case RSPPIPELINE_FINISH_SUB_BLOCK:
|
||||||
NextInstruction = RSPPIPELINE_NORMAL;
|
NextInstruction = RSPPIPELINE_NORMAL;
|
||||||
|
@ -931,7 +931,7 @@ void CompilerRSPBlock(void)
|
||||||
CompilePC = 0;
|
CompilePC = 0;
|
||||||
EndPC = *PrgCount;
|
EndPC = *PrgCount;
|
||||||
}
|
}
|
||||||
} while (NextInstruction != RSPPIPELINE_FINISH_BLOCK && (CompilePC < EndPC || NextInstruction == RSPPIPELINE_DELAY_SLOT));
|
} while (NextInstruction != RSPPIPELINE_FINISH_BLOCK && (CompilePC < EndPC || NextInstruction == RSPPIPELINE_DELAY_SLOT || NextInstruction == RSPPIPELINE_DELAY_SLOT_DONE));
|
||||||
CPU_Message("===== End of recompiled code =====");
|
CPU_Message("===== End of recompiled code =====");
|
||||||
|
|
||||||
if (Compiler.bReOrdering)
|
if (Compiler.bReOrdering)
|
||||||
|
|
Loading…
Reference in New Issue