mirror of
https://github.com/azahar-emu/dynarmic
synced 2025-11-07 15:40:00 +01:00
A64/sys_ic: Return to dispatch on possible invalidation
This commit is contained in:
parent
cf0709c7f1
commit
af2d50288f
@ -9,17 +9,23 @@ namespace Dynarmic::A64 {
|
|||||||
|
|
||||||
bool TranslatorVisitor::IC_IALLU() {
|
bool TranslatorVisitor::IC_IALLU() {
|
||||||
ir.InstructionCacheOperationRaised(InstructionCacheOperation::InvalidateAllToPoU, ir.Imm64(0));
|
ir.InstructionCacheOperationRaised(InstructionCacheOperation::InvalidateAllToPoU, ir.Imm64(0));
|
||||||
return true;
|
ir.SetPC(ir.Imm64(ir.current_location->PC() + 4));
|
||||||
|
ir.SetTerm(IR::Term::CheckHalt{IR::Term::ReturnToDispatch{}});
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TranslatorVisitor::IC_IALLUIS() {
|
bool TranslatorVisitor::IC_IALLUIS() {
|
||||||
ir.InstructionCacheOperationRaised(InstructionCacheOperation::InvalidateAllToPoUInnerSharable, ir.Imm64(0));
|
ir.InstructionCacheOperationRaised(InstructionCacheOperation::InvalidateAllToPoUInnerSharable, ir.Imm64(0));
|
||||||
return true;
|
ir.SetPC(ir.Imm64(ir.current_location->PC() + 4));
|
||||||
|
ir.SetTerm(IR::Term::CheckHalt{IR::Term::ReturnToDispatch{}});
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TranslatorVisitor::IC_IVAU(Reg Rt) {
|
bool TranslatorVisitor::IC_IVAU(Reg Rt) {
|
||||||
ir.InstructionCacheOperationRaised(InstructionCacheOperation::InvalidateByVAToPoU, X(64, Rt));
|
ir.InstructionCacheOperationRaised(InstructionCacheOperation::InvalidateByVAToPoU, X(64, Rt));
|
||||||
return true;
|
ir.SetPC(ir.Imm64(ir.current_location->PC() + 4));
|
||||||
|
ir.SetTerm(IR::Term::CheckHalt{IR::Term::ReturnToDispatch{}});
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Dynarmic::A64
|
} // namespace Dynarmic::A64
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user