mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-02-19 14:52:57 +00:00
A64: Implement ISB
Given we want to ensure that all instructions are fetched again, we can treat an ISB instruction as a code cache flush.
This commit is contained in:
@@ -71,6 +71,13 @@ bool TranslatorVisitor::DMB(Imm<4> /*CRm*/) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::ISB(Imm<4> /*CRm*/) {
|
||||
ir.InstructionSynchronizationBarrier();
|
||||
ir.SetPC(ir.Imm64(ir.current_location->PC() + 4));
|
||||
ir.SetTerm(IR::Term::ReturnToDispatch{});
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TranslatorVisitor::MSR_reg(Imm<1> o0, Imm<3> op1, Imm<4> CRn, Imm<4> CRm, Imm<3> op2, Reg Rt) {
|
||||
const auto sys_reg = concatenate(Imm<1>{1}, o0, op1, CRn, CRm, op2).ZeroExtend<SystemRegisterEncoding>();
|
||||
switch (sys_reg) {
|
||||
|
||||
Reference in New Issue
Block a user