diff --git a/src/frontend/A32/decoder/thumb32.inc b/src/frontend/A32/decoder/thumb32.inc index 01325409..cd8b2d69 100644 --- a/src/frontend/A32/decoder/thumb32.inc +++ b/src/frontend/A32/decoder/thumb32.inc @@ -95,12 +95,12 @@ INST(thumb32_MOVT, "MOVT", "11110i101100iiii0iiidd //INST(thumb32_MSR_reg_3, "MSR (reg)", "111100111000----10-0--1---0-----") //INST(thumb32_MSR_reg_4, "MSR (reg)", "111100111000----10-0--00--0-----") -//INST(thumb32_NOP, "NOP", "111100111010----10-0-00000000000") -//INST(thumb32_YIELD, "YIELD", "111100111010----10-0-00000000001") -//INST(thumb32_WFE, "WFE", "111100111010----10-0-00000000010") -//INST(thumb32_WFI, "WFI", "111100111010----10-0-00000000011") -//INST(thumb32_SEV, "SEV", "111100111010----10-0-00000000100") -//INST(thumb32_SEVL, "SEVL", "111100111010----10-0-00000000101") +INST(thumb32_NOP, "NOP", "11110011101011111000000000000000") +INST(thumb32_YIELD, "YIELD", "11110011101011111000000000000001") +INST(thumb32_WFE, "WFE", "11110011101011111000000000000010") +INST(thumb32_WFI, "WFI", "11110011101011111000000000000011") +INST(thumb32_SEV, "SEV", "11110011101011111000000000000100") +INST(thumb32_SEVL, "SEVL", "11110011101011111000000000000101") //INST(thumb32_DBG, "DBG", "111100111010----10-0-0001111----") //INST(thumb32_CPS, "CPS", "111100111010----10-0------------") diff --git a/src/frontend/A32/translate/impl/thumb32_control.cpp b/src/frontend/A32/translate/impl/thumb32_control.cpp index ed2dc29b..9db2f0f3 100644 --- a/src/frontend/A32/translate/impl/thumb32_control.cpp +++ b/src/frontend/A32/translate/impl/thumb32_control.cpp @@ -30,8 +30,32 @@ bool ThumbTranslatorVisitor::thumb32_ISB([[maybe_unused]] Imm<4> option) { return false; } +bool ThumbTranslatorVisitor::thumb32_NOP() { + return thumb16_NOP(); +} + +bool ThumbTranslatorVisitor::thumb32_SEV() { + return thumb16_SEV(); +} + +bool ThumbTranslatorVisitor::thumb32_SEVL() { + return thumb16_SEVL(); +} + bool ThumbTranslatorVisitor::thumb32_UDF() { return thumb16_UDF(); } +bool ThumbTranslatorVisitor::thumb32_WFE() { + return thumb16_WFE(); +} + +bool ThumbTranslatorVisitor::thumb32_WFI() { + return thumb16_WFI(); +} + +bool ThumbTranslatorVisitor::thumb32_YIELD() { + return thumb16_YIELD(); +} + } // namespace Dynarmic::A32 diff --git a/src/frontend/A32/translate/impl/translate_thumb.h b/src/frontend/A32/translate/impl/translate_thumb.h index eae0f7c6..c340cc48 100644 --- a/src/frontend/A32/translate/impl/translate_thumb.h +++ b/src/frontend/A32/translate/impl/translate_thumb.h @@ -168,7 +168,13 @@ struct ThumbTranslatorVisitor final { bool thumb32_DMB(Imm<4> option); bool thumb32_DSB(Imm<4> option); bool thumb32_ISB(Imm<4> option); + bool thumb32_NOP(); + bool thumb32_SEV(); + bool thumb32_SEVL(); bool thumb32_UDF(); + bool thumb32_WFE(); + bool thumb32_WFI(); + bool thumb32_YIELD(); // thumb32 branch instructions bool thumb32_BL_imm(Imm<1> S, Imm<10> hi, Imm<1> j1, Imm<1> j2, Imm<11> lo);