arm_dyncom.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include <memory>
  6. #include "common/common_types.h"
  7. #include "core/arm/arm_interface.h"
  8. #include "core/arm/skyeye_common/armdefs.h"
  9. class ARM_DynCom final : virtual public ARM_Interface {
  10. public:
  11. ARM_DynCom(PrivilegeMode initial_mode);
  12. ~ARM_DynCom();
  13. void SetPC(u32 pc) override;
  14. u32 GetPC() const override;
  15. u32 GetReg(int index) const override;
  16. void SetReg(int index, u32 value) override;
  17. u32 GetCPSR() const override;
  18. void SetCPSR(u32 cpsr) override;
  19. u32 GetCP15Register(CP15Register reg) override;
  20. void SetCP15Register(CP15Register reg, u32 value) override;
  21. void AddTicks(u64 ticks) override;
  22. void ResetContext(Core::ThreadContext& context, u32 stack_top, u32 entry_point, u32 arg) override;
  23. void SaveContext(Core::ThreadContext& ctx) override;
  24. void LoadContext(const Core::ThreadContext& ctx) override;
  25. void PrepareReschedule() override;
  26. void ExecuteInstructions(int num_instructions) override;
  27. private:
  28. std::unique_ptr<ARMul_State> state;
  29. };