mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-10 03:36:28 +00:00
Merge pull request #577 from lioncash/barrier
thumb32: Implement barrier instructions and CLREX
This commit is contained in:
@@ -7,6 +7,28 @@
|
||||
|
||||
namespace Dynarmic::A32 {
|
||||
|
||||
bool ThumbTranslatorVisitor::thumb32_CLREX() {
|
||||
ir.ClearExclusive();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ThumbTranslatorVisitor::thumb32_DMB([[maybe_unused]] Imm<4> option) {
|
||||
ir.DataMemoryBarrier();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ThumbTranslatorVisitor::thumb32_DSB([[maybe_unused]] Imm<4> option) {
|
||||
ir.DataSynchronizationBarrier();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ThumbTranslatorVisitor::thumb32_ISB([[maybe_unused]] Imm<4> option) {
|
||||
ir.InstructionSynchronizationBarrier();
|
||||
ir.BranchWritePC(ir.Imm32(ir.current_location.PC() + 4));
|
||||
ir.SetTerm(IR::Term::ReturnToDispatch{});
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ThumbTranslatorVisitor::thumb32_UDF() {
|
||||
return thumb16_UDF();
|
||||
}
|
||||
|
||||
@@ -164,6 +164,10 @@ struct ThumbTranslatorVisitor final {
|
||||
bool thumb32_MOVW_imm(Imm<1> imm1, Imm<4> imm4, Imm<3> imm3, Reg d, Imm<8> imm8);
|
||||
|
||||
// thumb32 miscellaneous control instructions
|
||||
bool thumb32_CLREX();
|
||||
bool thumb32_DMB(Imm<4> option);
|
||||
bool thumb32_DSB(Imm<4> option);
|
||||
bool thumb32_ISB(Imm<4> option);
|
||||
bool thumb32_UDF();
|
||||
|
||||
// thumb32 branch instructions
|
||||
|
||||
Reference in New Issue
Block a user