summaryrefslogtreecommitdiff
path: root/src/core/arm/dyncom
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2016-09-15 20:14:18 -0700
committerGitHub <noreply@github.com>2016-09-15 20:14:18 -0700
commitf196924dddb68f4e47ab6da36552840f82616b90 (patch)
treebb57f41d9d26c4a75059f28165acaff88cfde652 /src/core/arm/dyncom
parent81bb315839a95998fe20fdcdb5cee0f161335185 (diff)
parent1b95f61d82da17f691cc70cc108a08bef0831abd (diff)
Merge pull request #2042 from bunnei/dynarmic
Interface ARM CPU JIT (Dynarmic)
Diffstat (limited to 'src/core/arm/dyncom')
-rw-r--r--src/core/arm/dyncom/arm_dyncom.cpp17
-rw-r--r--src/core/arm/dyncom/arm_dyncom.h3
2 files changed, 5 insertions, 15 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp
index ab77da965..d84917529 100644
--- a/src/core/arm/dyncom/arm_dyncom.cpp
+++ b/src/core/arm/dyncom/arm_dyncom.cpp
@@ -93,15 +93,6 @@ void ARM_DynCom::ExecuteInstructions(int num_instructions) {
AddTicks(ticks_executed);
}
-void ARM_DynCom::ResetContext(Core::ThreadContext& context, u32 stack_top, u32 entry_point, u32 arg) {
- memset(&context, 0, sizeof(Core::ThreadContext));
-
- context.cpu_registers[0] = arg;
- context.pc = entry_point;
- context.sp = stack_top;
- context.cpsr = USER32MODE | ((entry_point & 1) << 5); // Usermode and THUMB mode
-}
-
void ARM_DynCom::SaveContext(Core::ThreadContext& ctx) {
memcpy(ctx.cpu_registers, state->Reg.data(), sizeof(ctx.cpu_registers));
memcpy(ctx.fpu_registers, state->ExtReg.data(), sizeof(ctx.fpu_registers));
@@ -111,8 +102,8 @@ void ARM_DynCom::SaveContext(Core::ThreadContext& ctx) {
ctx.pc = state->Reg[15];
ctx.cpsr = state->Cpsr;
- ctx.fpscr = state->VFP[1];
- ctx.fpexc = state->VFP[2];
+ ctx.fpscr = state->VFP[VFP_FPSCR];
+ ctx.fpexc = state->VFP[VFP_FPEXC];
}
void ARM_DynCom::LoadContext(const Core::ThreadContext& ctx) {
@@ -124,8 +115,8 @@ void ARM_DynCom::LoadContext(const Core::ThreadContext& ctx) {
state->Reg[15] = ctx.pc;
state->Cpsr = ctx.cpsr;
- state->VFP[1] = ctx.fpscr;
- state->VFP[2] = ctx.fpexc;
+ state->VFP[VFP_FPSCR] = ctx.fpscr;
+ state->VFP[VFP_FPEXC] = ctx.fpexc;
}
void ARM_DynCom::PrepareReschedule() {
diff --git a/src/core/arm/dyncom/arm_dyncom.h b/src/core/arm/dyncom/arm_dyncom.h
index e763abc24..70f71a828 100644
--- a/src/core/arm/dyncom/arm_dyncom.h
+++ b/src/core/arm/dyncom/arm_dyncom.h
@@ -16,7 +16,7 @@ namespace Core {
struct ThreadContext;
}
-class ARM_DynCom final : virtual public ARM_Interface {
+class ARM_DynCom final : public ARM_Interface {
public:
ARM_DynCom(PrivilegeMode initial_mode);
~ARM_DynCom();
@@ -38,7 +38,6 @@ public:
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;