diff options
author | Lioncash <mathew1800@gmail.com> | 2015-02-12 21:11:39 +0100 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2015-02-13 03:54:28 +0100 |
commit | b7fac494cdda9efb65168b116b1673af4ab9f242 (patch) | |
tree | 54eed2ab999ddb5063a5f0b52a72b27c8159cb44 /src/core/arm/dyncom/arm_dyncom.cpp | |
parent | dyncom: Clean up the constructor (diff) | |
download | yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.tar yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.tar.gz yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.tar.bz2 yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.tar.lz yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.tar.xz yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.tar.zst yuzu-b7fac494cdda9efb65168b116b1673af4ab9f242.zip |
Diffstat (limited to 'src/core/arm/dyncom/arm_dyncom.cpp')
-rw-r--r-- | src/core/arm/dyncom/arm_dyncom.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp index 6a95ede24..bbcbbdd2b 100644 --- a/src/core/arm/dyncom/arm_dyncom.cpp +++ b/src/core/arm/dyncom/arm_dyncom.cpp @@ -7,6 +7,7 @@ #include "core/arm/dyncom/arm_dyncom.h" #include "core/arm/dyncom/arm_dyncom_interpreter.h" +#include "core/arm/dyncom/arm_dyncom_run.h" #include "core/core.h" #include "core/core_timing.h" @@ -15,7 +16,7 @@ const static cpu_config_t s_arm11_cpu_info = { "armv6", "arm11", 0x0007b000, 0x0007f000, NONCACHE }; -ARM_DynCom::ARM_DynCom() { +ARM_DynCom::ARM_DynCom(PrivilegeMode initial_mode) { state = std::unique_ptr<ARMul_State>(new ARMul_State); ARMul_NewState(state.get()); @@ -33,6 +34,9 @@ ARM_DynCom::ARM_DynCom() { state->NextInstr = RESUME; // NOTE: This will be overwritten by LoadContext state->Emulate = RUN; + // 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; } |