A32: Implement Thumb-1 variant of SEVL

While we're at it, also add the Thumb-2 encoding to the encoding table
to make sure it isn't forgotten about in the future.
This commit is contained in:
Lioncash 2019-05-03 11:00:03 -04:00 committed by MerryMage
parent 9a097e307f
commit 9935f3aa28
4 changed files with 11 additions and 0 deletions

View file

@ -90,6 +90,7 @@ std::optional<std::reference_wrapper<const Thumb16Matcher<V>>> DecodeThumb16(u16
// Hint instructions // Hint instructions
INST(&V::thumb16_NOP, "NOP", "1011111100000000"), // v6T2 INST(&V::thumb16_NOP, "NOP", "1011111100000000"), // v6T2
INST(&V::thumb16_SEV, "SEV", "1011111101000000"), // v7 INST(&V::thumb16_SEV, "SEV", "1011111101000000"), // v7
INST(&V::thumb16_SEVL, "SEVL", "1011111101010000"), // v8
INST(&V::thumb16_WFE, "WFE", "1011111100100000"), // v7 INST(&V::thumb16_WFE, "WFE", "1011111100100000"), // v7
INST(&V::thumb16_WFI, "WFI", "1011111100110000"), // v7 INST(&V::thumb16_WFI, "WFI", "1011111100110000"), // v7
INST(&V::thumb16_YIELD, "YIELD", "1011111100010000"), // v7 INST(&V::thumb16_YIELD, "YIELD", "1011111100010000"), // v7

View file

@ -127,6 +127,7 @@ std::optional<std::reference_wrapper<const Thumb32Matcher<V>>> DecodeThumb32(u32
//INST(&V::thumb32_WFE, "WFE", "111100111010----10-0-00000000010"), //INST(&V::thumb32_WFE, "WFE", "111100111010----10-0-00000000010"),
//INST(&V::thumb32_WFI, "WFI", "111100111010----10-0-00000000011"), //INST(&V::thumb32_WFI, "WFI", "111100111010----10-0-00000000011"),
//INST(&V::thumb32_SEV, "SEV", "111100111010----10-0-00000000100"), //INST(&V::thumb32_SEV, "SEV", "111100111010----10-0-00000000100"),
//INST(&V::thumb32_SEVL, "SEVL", "111100111010----10-0-00000000101"),
//INST(&V::thumb32_DBG, "DBG", "111100111010----10-0-0001111----"), //INST(&V::thumb32_DBG, "DBG", "111100111010----10-0-0001111----"),
//INST(&V::thumb32_CPS, "CPS", "111100111010----10-0------------"), //INST(&V::thumb32_CPS, "CPS", "111100111010----10-0------------"),

View file

@ -254,6 +254,10 @@ public:
return "sev"; return "sev";
} }
std::string thumb16_SEVL() {
return "sevl";
}
std::string thumb16_WFE() { std::string thumb16_WFE() {
return "wfe"; return "wfe";
} }

View file

@ -684,6 +684,11 @@ struct ThumbTranslatorVisitor final {
return RaiseException(Exception::SendEvent); return RaiseException(Exception::SendEvent);
} }
// SEVL<c>
bool thumb16_SEVL() {
return RaiseException(Exception::SendEventLocal);
}
// WFE<c> // WFE<c>
bool thumb16_WFE() { bool thumb16_WFE() {
return RaiseException(Exception::WaitForEvent); return RaiseException(Exception::WaitForEvent);