summaryrefslogtreecommitdiffstats
path: root/src/core/arm/dynarmic/arm_dynarmic.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2016-09-02 05:07:14 +0200
committerbunnei <bunneidev@gmail.com>2016-09-15 23:49:26 +0200
commit1976a2d77374fa3465c02ccab08031ff67a743df (patch)
tree6fda308ba4b141cfe72c730e0f58092ff8ba562a /src/core/arm/dynarmic/arm_dynarmic.h
parentdynarmic: Add new submodule. (diff)
downloadyuzu-1976a2d77374fa3465c02ccab08031ff67a743df.tar
yuzu-1976a2d77374fa3465c02ccab08031ff67a743df.tar.gz
yuzu-1976a2d77374fa3465c02ccab08031ff67a743df.tar.bz2
yuzu-1976a2d77374fa3465c02ccab08031ff67a743df.tar.lz
yuzu-1976a2d77374fa3465c02ccab08031ff67a743df.tar.xz
yuzu-1976a2d77374fa3465c02ccab08031ff67a743df.tar.zst
yuzu-1976a2d77374fa3465c02ccab08031ff67a743df.zip
Diffstat (limited to '')
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h
new file mode 100644
index 000000000..6cae56737
--- /dev/null
+++ b/src/core/arm/dynarmic/arm_dynarmic.h
@@ -0,0 +1,51 @@
+// Copyright 2016 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <memory>
+
+#include <dynarmic/dynarmic.h>
+
+#include "common/common_types.h"
+
+#include "core/arm/arm_interface.h"
+#include "core/arm/skyeye_common/armstate.h"
+
+namespace Core {
+struct ThreadContext;
+}
+
+class ARM_Dynarmic final : virtual public ARM_Interface {
+public:
+ ARM_Dynarmic(PrivilegeMode initial_mode);
+
+ void SetPC(u32 pc) override;
+ u32 GetPC() const override;
+ u32 GetReg(int index) const override;
+ void SetReg(int index, u32 value) override;
+ u32 GetVFPReg(int index) const override;
+ void SetVFPReg(int index, u32 value) override;
+ u32 GetVFPSystemReg(VFPSystemRegister reg) const override;
+ void SetVFPSystemReg(VFPSystemRegister reg, u32 value) override;
+ u32 GetCPSR() const override;
+ void SetCPSR(u32 cpsr) override;
+ u32 GetCP15Register(CP15Register reg) override;
+ void SetCP15Register(CP15Register reg, u32 value) override;
+
+ void AddTicks(u64 ticks) override;
+
+ void ResetContext(Core::ThreadContext& context, u32 stack_top, u32 entry_point, u32 arg) override;
+ void SaveContext(Core::ThreadContext& ctx) override;
+ void LoadContext(const Core::ThreadContext& ctx) override;
+
+ void PrepareReschedule() override;
+ void ExecuteInstructions(int num_instructions) override;
+
+ void ClearInstructionCache() override;
+
+private:
+ std::unique_ptr<Dynarmic::Jit> jit;
+ std::unique_ptr<ARMul_State> interpreter_state;
+};