// Copyright 2017 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #include #include #include "common/common_types.h" struct ARMul_State; class DynarmicCP15 final : public Dynarmic::Coprocessor { 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; 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; private: std::shared_ptr interpreter_state; };