diff --git a/externals/dynarmic b/externals/dynarmic index 4e6848d1c..b58048a5a 160000 --- a/externals/dynarmic +++ b/externals/dynarmic @@ -1 +1 @@ -Subproject commit 4e6848d1c9e8dadc70595c15b5589f8b14aad478 +Subproject commit b58048a5a88ad6184d64f16cfd2c5d63a1952e77 diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp index b39a4a24e..bb32f470c 100644 --- a/src/core/arm/dynarmic/arm_dynarmic.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic.cpp @@ -143,6 +143,14 @@ public: return; } break; + case Dynarmic::A32::Exception::SendEvent: + case Dynarmic::A32::Exception::SendEventLocal: + case Dynarmic::A32::Exception::WaitForInterrupt: + case Dynarmic::A32::Exception::WaitForEvent: + case Dynarmic::A32::Exception::Yield: + case Dynarmic::A32::Exception::PreloadData: + case Dynarmic::A32::Exception::PreloadDataWithIntentToWrite: + return; } ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", static_cast(exception), pc, MemoryReadCode(pc)); diff --git a/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp b/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp index 119aefac7..167f58e47 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_cp15.cpp @@ -14,10 +14,10 @@ DynarmicCP15::DynarmicCP15(const std::shared_ptr& state) : interpre DynarmicCP15::~DynarmicCP15() = default; -boost::optional DynarmicCP15::CompileInternalOperation(bool two, unsigned opc1, - CoprocReg CRd, CoprocReg CRn, - CoprocReg CRm, unsigned opc2) { - return boost::none; +std::optional DynarmicCP15::CompileInternalOperation(bool two, unsigned opc1, + CoprocReg CRd, CoprocReg CRn, + CoprocReg CRm, unsigned opc2) { + return std::nullopt; } CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1, CoprocReg CRn, @@ -38,7 +38,7 @@ CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1 // This is a dummy write, we ignore the value written here. return &interpreter_state->CP15[CP15_DATA_MEMORY_BARRIER]; default: - return boost::blank{}; + return std::monostate{}; } } @@ -46,11 +46,11 @@ CallbackOrAccessOneWord DynarmicCP15::CompileSendOneWord(bool two, unsigned opc1 return &interpreter_state->CP15[CP15_THREAD_UPRW]; } - return boost::blank{}; + return std::monostate{}; } CallbackOrAccessTwoWords DynarmicCP15::CompileSendTwoWords(bool two, unsigned opc, CoprocReg CRm) { - return boost::blank{}; + return std::monostate{}; } CallbackOrAccessOneWord DynarmicCP15::CompileGetOneWord(bool two, unsigned opc1, CoprocReg CRn, @@ -64,25 +64,23 @@ CallbackOrAccessOneWord DynarmicCP15::CompileGetOneWord(bool two, unsigned opc1, case 3: return &interpreter_state->CP15[CP15_THREAD_URO]; default: - return boost::blank{}; + return std::monostate{}; } } - return boost::blank{}; + return std::monostate{}; } CallbackOrAccessTwoWords DynarmicCP15::CompileGetTwoWords(bool two, unsigned opc, CoprocReg CRm) { - return boost::blank{}; + return std::monostate{}; } -boost::optional DynarmicCP15::CompileLoadWords(bool two, bool long_transfer, - CoprocReg CRd, - boost::optional option) { - return boost::none; +std::optional DynarmicCP15::CompileLoadWords(bool two, bool long_transfer, CoprocReg CRd, + std::optional option) { + return std::nullopt; } -boost::optional DynarmicCP15::CompileStoreWords(bool two, bool long_transfer, - CoprocReg CRd, - boost::optional option) { - return boost::none; +std::optional DynarmicCP15::CompileStoreWords(bool two, bool long_transfer, CoprocReg CRd, + std::optional option) { + return std::nullopt; } diff --git a/src/core/arm/dynarmic/arm_dynarmic_cp15.h b/src/core/arm/dynarmic/arm_dynarmic_cp15.h index 66740ea71..923343864 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_cp15.h +++ b/src/core/arm/dynarmic/arm_dynarmic_cp15.h @@ -17,19 +17,19 @@ public: explicit DynarmicCP15(const std::shared_ptr&); ~DynarmicCP15() override; - boost::optional CompileInternalOperation(bool two, unsigned opc1, CoprocReg CRd, - CoprocReg CRn, CoprocReg CRm, - unsigned opc2) override; + std::optional CompileInternalOperation(bool two, unsigned opc1, CoprocReg CRd, + CoprocReg CRn, CoprocReg CRm, + unsigned opc2) override; CallbackOrAccessOneWord CompileSendOneWord(bool two, unsigned opc1, CoprocReg CRn, CoprocReg CRm, unsigned opc2) override; CallbackOrAccessTwoWords CompileSendTwoWords(bool two, unsigned opc, CoprocReg CRm) override; CallbackOrAccessOneWord CompileGetOneWord(bool two, unsigned opc1, CoprocReg CRn, CoprocReg CRm, unsigned opc2) override; CallbackOrAccessTwoWords CompileGetTwoWords(bool two, unsigned opc, CoprocReg CRm) override; - boost::optional CompileLoadWords(bool two, bool long_transfer, CoprocReg CRd, - boost::optional option) override; - boost::optional CompileStoreWords(bool two, bool long_transfer, CoprocReg CRd, - boost::optional option) override; + std::optional CompileLoadWords(bool two, bool long_transfer, CoprocReg CRd, + std::optional option) override; + std::optional CompileStoreWords(bool two, bool long_transfer, CoprocReg CRd, + std::optional option) override; private: std::shared_ptr interpreter_state;