diff options
author | bunnei <bunneidev@gmail.com> | 2015-07-27 07:09:46 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2015-07-27 07:09:46 +0200 |
commit | 62caa89f480591260a95d165ccc62ec6c8dd9044 (patch) | |
tree | cf113d18aa3900d80fa66ae4c00f5e1fd0006c03 /src/core/arm/dyncom/arm_dyncom.cpp | |
parent | Merge pull request #991 from yuriks/globjects (diff) | |
parent | dyncom: Use std::array for register arrays (diff) | |
download | yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.tar yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.tar.gz yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.tar.bz2 yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.tar.lz yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.tar.xz yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.tar.zst yuzu-62caa89f480591260a95d165ccc62ec6c8dd9044.zip |
Diffstat (limited to 'src/core/arm/dyncom/arm_dyncom.cpp')
-rw-r--r-- | src/core/arm/dyncom/arm_dyncom.cpp | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp index a51a3acf8..c665f706f 100644 --- a/src/core/arm/dyncom/arm_dyncom.cpp +++ b/src/core/arm/dyncom/arm_dyncom.cpp @@ -18,16 +18,7 @@ #include "core/core_timing.h" ARM_DynCom::ARM_DynCom(PrivilegeMode initial_mode) { - state = Common::make_unique<ARMul_State>(); - - // Reset the core to initial state - ARMul_Reset(state.get()); - - // Switch to the desired privilege mode. - switch_mode(state.get(), initial_mode); - - state->Reg[13] = 0x10000000; // Set stack pointer to the top of the stack - state->Reg[15] = 0x00000000; + state = Common::make_unique<ARMul_State>(initial_mode); } ARM_DynCom::~ARM_DynCom() { @@ -91,8 +82,8 @@ void ARM_DynCom::ResetContext(Core::ThreadContext& context, u32 stack_top, u32 e } void ARM_DynCom::SaveContext(Core::ThreadContext& ctx) { - memcpy(ctx.cpu_registers, state->Reg, sizeof(ctx.cpu_registers)); - memcpy(ctx.fpu_registers, state->ExtReg, sizeof(ctx.fpu_registers)); + memcpy(ctx.cpu_registers, state->Reg.data(), sizeof(ctx.cpu_registers)); + memcpy(ctx.fpu_registers, state->ExtReg.data(), sizeof(ctx.fpu_registers)); ctx.sp = state->Reg[13]; ctx.lr = state->Reg[14]; @@ -104,8 +95,8 @@ void ARM_DynCom::SaveContext(Core::ThreadContext& ctx) { } void ARM_DynCom::LoadContext(const Core::ThreadContext& ctx) { - memcpy(state->Reg, ctx.cpu_registers, sizeof(ctx.cpu_registers)); - memcpy(state->ExtReg, ctx.fpu_registers, sizeof(ctx.fpu_registers)); + memcpy(state->Reg.data(), ctx.cpu_registers, sizeof(ctx.cpu_registers)); + memcpy(state->ExtReg.data(), ctx.fpu_registers, sizeof(ctx.fpu_registers)); state->Reg[13] = ctx.sp; state->Reg[14] = ctx.lr; |