diff options
| author | 2015-04-06 15:06:07 -0400 | |
|---|---|---|
| committer | 2015-04-06 15:06:07 -0400 | |
| commit | 14dcd986535c681601d6f255899157aff021a5d2 (patch) | |
| tree | fb35f0b8444122438dcdf41b4a3b0bf32e4d7d29 /src/core/arm/dyncom | |
| parent | Merge pull request #684 from lioncash/uninit (diff) | |
| parent | core: Migrate 3DS-specific CP15 register setting into Init (diff) | |
| download | yuzu-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.cpp | 8 | ||||
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom.h | 2 | ||||
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 1 |
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 | ||
| 71 | u32 ARM_DynCom::GetCP15Register(CP15Register reg) { | ||
| 72 | return state->CP15[reg]; | ||
| 73 | } | ||
| 74 | |||
| 75 | void ARM_DynCom::SetCP15Register(CP15Register reg, u32 value) { | ||
| 76 | state->CP15[reg] = value; | ||
| 77 | } | ||
| 78 | |||
| 71 | void ARM_DynCom::AddTicks(u64 ticks) { | 79 | void 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] |