summaryrefslogtreecommitdiffstats
path: root/src/core/arm/interpreter/arm_interpreter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/arm/interpreter/arm_interpreter.cpp')
-rw-r--r--src/core/arm/interpreter/arm_interpreter.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/arm/interpreter/arm_interpreter.cpp b/src/core/arm/interpreter/arm_interpreter.cpp
index 0e893f182..d35a3ae17 100644
--- a/src/core/arm/interpreter/arm_interpreter.cpp
+++ b/src/core/arm/interpreter/arm_interpreter.cpp
@@ -12,6 +12,8 @@ ARM_Interpreter::ARM_Interpreter() {
state = new ARMul_State;
ARMul_EmulateInit();
+ memset(state, 0, sizeof(ARMul_State));
+
ARMul_NewState(state);
state->abort_model = 0;
@@ -23,12 +25,14 @@ ARM_Interpreter::ARM_Interpreter() {
mmu_init(state);
// Reset the core to initial state
+ ARMul_CoProInit(state);
ARMul_Reset(state);
- state->NextInstr = 0;
+ state->NextInstr = RESUME;
state->Emulate = 3;
state->pc = state->Reg[15] = 0x00000000;
state->Reg[13] = 0x10000000; // Set stack pointer to the top of the stack
+ state->servaddr = 0xFFFF0000;
}
ARM_Interpreter::~ARM_Interpreter() {