diff --git a/src/frontend/A32/decoder/thumb16.h b/src/frontend/A32/decoder/thumb16.h index a063ff78..7d73ecc7 100644 --- a/src/frontend/A32/decoder/thumb16.h +++ b/src/frontend/A32/decoder/thumb16.h @@ -89,6 +89,7 @@ std::optional>> DecodeThumb16(u16 // Hint instructions INST(&V::thumb16_NOP, "NOP", "1011111100000000"), // v6T2 + INST(&V::thumb16_SEV, "SEV", "1011111101000000"), // v7 // Miscellaneous 16-bit instructions INST(&V::thumb16_SXTH, "SXTH", "1011001000mmmddd"), // v6 diff --git a/src/frontend/A32/disassembler/disassembler_thumb.cpp b/src/frontend/A32/disassembler/disassembler_thumb.cpp index 2ae57711..b08e69f8 100644 --- a/src/frontend/A32/disassembler/disassembler_thumb.cpp +++ b/src/frontend/A32/disassembler/disassembler_thumb.cpp @@ -250,6 +250,10 @@ public: return "nop"; } + std::string thumb16_SEV() { + return "sev"; + } + std::string thumb16_SXTH(Reg m, Reg d) { return fmt::format("sxth {}, {}", d, m); } diff --git a/src/frontend/A32/translate/translate_thumb.cpp b/src/frontend/A32/translate/translate_thumb.cpp index bfd478a7..8172f62e 100644 --- a/src/frontend/A32/translate/translate_thumb.cpp +++ b/src/frontend/A32/translate/translate_thumb.cpp @@ -679,6 +679,11 @@ struct ThumbTranslatorVisitor final { return true; } + // SEV + bool thumb16_SEV() { + return RaiseException(Exception::SendEvent); + } + // SXTH , // Rd cannot encode R15. bool thumb16_SXTH(Reg m, Reg d) {