A32/barrier: Correct PC assignment within ISB

The SetRegister() IR function doesn't allow specifying the PC as a
register. This is a discrepancy that slipped through (my bad). Instead,
we can use BranchWritePC(), like how the other similar PC modifying
locations do it.
This commit is contained in:
Lioncash 2019-04-27 17:22:30 -04:00 committed by MerryMage
parent 8b2d8231ba
commit f96036b3f1

View file

@ -20,7 +20,7 @@ bool ArmTranslatorVisitor::arm_DSB([[maybe_unused]] Imm4 option) {
bool ArmTranslatorVisitor::arm_ISB([[maybe_unused]] Imm4 option) { bool ArmTranslatorVisitor::arm_ISB([[maybe_unused]] Imm4 option) {
ir.InstructionSynchronizationBarrier(); ir.InstructionSynchronizationBarrier();
ir.SetRegister(Reg::PC, ir.Imm32(ir.current_location.PC() + 4)); ir.BranchWritePC(ir.Imm32(ir.current_location.PC() + 4));
ir.SetTerm(IR::Term::ReturnToDispatch{}); ir.SetTerm(IR::Term::ReturnToDispatch{});
return false; return false;
} }