summaryrefslogtreecommitdiff
path: root/src/core/arm/dyncom
diff options
context:
space:
mode:
authorGravatar bunnei2015-04-06 15:06:07 -0400
committerGravatar bunnei2015-04-06 15:06:07 -0400
commit14dcd986535c681601d6f255899157aff021a5d2 (patch)
treefb35f0b8444122438dcdf41b4a3b0bf32e4d7d29 /src/core/arm/dyncom
parentMerge pull request #684 from lioncash/uninit (diff)
parentcore: Migrate 3DS-specific CP15 register setting into Init (diff)
downloadyuzu-14dcd986535c681601d6f255899157aff021a5d2.tar.gz
yuzu-14dcd986535c681601d6f255899157aff021a5d2.tar.xz
yuzu-14dcd986535c681601d6f255899157aff021a5d2.zip
Merge pull request #685 from lioncash/cpregs
dyncom: Set the MPCore CP15 register reset values on initialization.
Diffstat (limited to 'src/core/arm/dyncom')
-rw-r--r--src/core/arm/dyncom/arm_dyncom.cpp8
-rw-r--r--src/core/arm/dyncom/arm_dyncom.h2
-rw-r--r--src/core/arm/dyncom/arm_dyncom_interpreter.cpp1
3 files changed, 10 insertions, 1 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp
index cb1a410a0..1b1d01420 100644
--- a/src/core/arm/dyncom/arm_dyncom.cpp
+++ b/src/core/arm/dyncom/arm_dyncom.cpp
@@ -68,6 +68,14 @@ void ARM_DynCom::SetCPSR(u32 cpsr) {
68 state->Cpsr = cpsr; 68 state->Cpsr = cpsr;
69} 69}
70 70
71u32 ARM_DynCom::GetCP15Register(CP15Register reg) {
72 return state->CP15[reg];
73}
74
75void ARM_DynCom::SetCP15Register(CP15Register reg, u32 value) {
76 state->CP15[reg] = value;
77}
78
71void ARM_DynCom::AddTicks(u64 ticks) { 79void ARM_DynCom::AddTicks(u64 ticks) {
72 down_count -= ticks; 80 down_count -= ticks;
73 if (down_count < 0) 81 if (down_count < 0)
diff --git a/src/core/arm/dyncom/arm_dyncom.h b/src/core/arm/dyncom/arm_dyncom.h
index a7f95d307..822b3bbb9 100644
--- a/src/core/arm/dyncom/arm_dyncom.h
+++ b/src/core/arm/dyncom/arm_dyncom.h
@@ -22,6 +22,8 @@ public:
22 void SetReg(int index, u32 value) override; 22 void SetReg(int index, u32 value) override;
23 u32 GetCPSR() const override; 23 u32 GetCPSR() const override;
24 void SetCPSR(u32 cpsr) override; 24 void SetCPSR(u32 cpsr) override;
25 u32 GetCP15Register(CP15Register reg) override;
26 void SetCP15Register(CP15Register reg, u32 value) override;
25 27
26 void AddTicks(u64 ticks) override; 28 void AddTicks(u64 ticks) override;
27 29
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp
index 8b1232c6c..65fe8a055 100644
--- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp
+++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp
@@ -3700,7 +3700,6 @@ unsigned InterpreterMainLoop(ARMul_State* state) {
3700 #define OPCODE_1 inst_cream->opcode_1 3700 #define OPCODE_1 inst_cream->opcode_1
3701 #define OPCODE_2 inst_cream->opcode_2 3701 #define OPCODE_2 inst_cream->opcode_2
3702 #define CRm inst_cream->crm 3702 #define CRm inst_cream->crm
3703 #define CP15_REG(n) cpu->CP15[CP15(n)]
3704 #define RD cpu->Reg[inst_cream->Rd] 3703 #define RD cpu->Reg[inst_cream->Rd]
3705 #define RD2 cpu->Reg[inst_cream->Rd + 1] 3704 #define RD2 cpu->Reg[inst_cream->Rd + 1]
3706 #define RN cpu->Reg[inst_cream->Rn] 3705 #define RN cpu->Reg[inst_cream->Rn]