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:
parent
8b2d8231ba
commit
f96036b3f1
1 changed files with 1 additions and 1 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue