1 /* This file is part of the dynarmic project.
2  * Copyright (c) 2019 MerryMage
3  * SPDX-License-Identifier: 0BSD
4  */
5 
6 #include "frontend/A32/translate/impl/translate_arm.h"
7 
8 namespace Dynarmic::A32 {
9 
arm_DMB(Imm<4> option)10 bool ArmTranslatorVisitor::arm_DMB([[maybe_unused]] Imm<4> option) {
11     ir.DataMemoryBarrier();
12     return true;
13 }
14 
arm_DSB(Imm<4> option)15 bool ArmTranslatorVisitor::arm_DSB([[maybe_unused]] Imm<4> option) {
16     ir.DataSynchronizationBarrier();
17     return true;
18 }
19 
arm_ISB(Imm<4> option)20 bool ArmTranslatorVisitor::arm_ISB([[maybe_unused]] Imm<4> option) {
21     ir.InstructionSynchronizationBarrier();
22     ir.BranchWritePC(ir.Imm32(ir.current_location.PC() + 4));
23     ir.SetTerm(IR::Term::ReturnToDispatch{});
24     return false;
25 }
26 
27 } // namespace Dynarmic::A32
28