summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar bunnei2015-08-13 18:13:25 -0400
committerGravatar bunnei2015-08-13 18:13:25 -0400
commitcebf245504b75469f19d3cc0a6f2f66aefa66947 (patch)
tree4026f74849517f02575bb34a8d4d35d50daaccfc /src/core
parentMerge pull request #1030 from archshift/force-inline (diff)
parentregisters: Support viewing VFP registers (diff)
downloadyuzu-cebf245504b75469f19d3cc0a6f2f66aefa66947.tar.gz
yuzu-cebf245504b75469f19d3cc0a6f2f66aefa66947.tar.xz
yuzu-cebf245504b75469f19d3cc0a6f2f66aefa66947.zip
Merge pull request #1027 from lioncash/debugger
debugger: Add the ability to view VFP register contents
Diffstat (limited to 'src/core')
-rw-r--r--src/core/arm/arm_interface.h28
-rw-r--r--src/core/arm/dyncom/arm_dyncom.cpp16
-rw-r--r--src/core/arm/dyncom/arm_dyncom.h4
-rw-r--r--src/core/arm/skyeye_common/arm_regformat.h2
4 files changed, 49 insertions, 1 deletions
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h
index 85ed2c698..5cffe513c 100644
--- a/src/core/arm/arm_interface.h
+++ b/src/core/arm/arm_interface.h
@@ -62,6 +62,34 @@ public:
62 virtual void SetReg(int index, u32 value) = 0; 62 virtual void SetReg(int index, u32 value) = 0;
63 63
64 /** 64 /**
65 * Gets the value of a VFP register
66 * @param index Register index (0-31)
67 * @return Returns the value in the register
68 */
69 virtual u32 GetVFPReg(int index) const = 0;
70
71 /**
72 * Sets a VFP register to the given value
73 * @param index Register index (0-31)
74 * @param value Value to set register to
75 */
76 virtual void SetVFPReg(int index, u32 value) = 0;
77
78 /**
79 * Gets the current value within a given VFP system register
80 * @param reg The VFP system register
81 * @return The value within the VFP system register
82 */
83 virtual u32 GetVFPSystemReg(VFPSystemRegister reg) const = 0;
84
85 /**
86 * Sets the VFP system register to the given value
87 * @param reg The VFP system register
88 * @param value Value to set the VFP system register to
89 */
90 virtual void SetVFPSystemReg(VFPSystemRegister reg, u32 value) = 0;
91
92 /**
65 * Get the current CPSR register 93 * Get the current CPSR register
66 * @return Returns the value of the CPSR register 94 * @return Returns the value of the CPSR register
67 */ 95 */
diff --git a/src/core/arm/dyncom/arm_dyncom.cpp b/src/core/arm/dyncom/arm_dyncom.cpp
index c665f706f..f3be2c857 100644
--- a/src/core/arm/dyncom/arm_dyncom.cpp
+++ b/src/core/arm/dyncom/arm_dyncom.cpp
@@ -40,6 +40,22 @@ void ARM_DynCom::SetReg(int index, u32 value) {
40 state->Reg[index] = value; 40 state->Reg[index] = value;
41} 41}
42 42
43u32 ARM_DynCom::GetVFPReg(int index) const {
44 return state->ExtReg[index];
45}
46
47void ARM_DynCom::SetVFPReg(int index, u32 value) {
48 state->ExtReg[index] = value;
49}
50
51u32 ARM_DynCom::GetVFPSystemReg(VFPSystemRegister reg) const {
52 return state->VFP[reg];
53}
54
55void ARM_DynCom::SetVFPSystemReg(VFPSystemRegister reg, u32 value) {
56 state->VFP[reg] = value;
57}
58
43u32 ARM_DynCom::GetCPSR() const { 59u32 ARM_DynCom::GetCPSR() const {
44 return state->Cpsr; 60 return state->Cpsr;
45} 61}
diff --git a/src/core/arm/dyncom/arm_dyncom.h b/src/core/arm/dyncom/arm_dyncom.h
index 87ab6908a..3664fd728 100644
--- a/src/core/arm/dyncom/arm_dyncom.h
+++ b/src/core/arm/dyncom/arm_dyncom.h
@@ -25,6 +25,10 @@ public:
25 u32 GetPC() const override; 25 u32 GetPC() const override;
26 u32 GetReg(int index) const override; 26 u32 GetReg(int index) const override;
27 void SetReg(int index, u32 value) override; 27 void SetReg(int index, u32 value) override;
28 u32 GetVFPReg(int index) const override;
29 void SetVFPReg(int index, u32 value) override;
30 u32 GetVFPSystemReg(VFPSystemRegister reg) const override;
31 void SetVFPSystemReg(VFPSystemRegister reg, u32 value) override;
28 u32 GetCPSR() const override; 32 u32 GetCPSR() const override;
29 void SetCPSR(u32 cpsr) override; 33 void SetCPSR(u32 cpsr) override;
30 u32 GetCP15Register(CP15Register reg) override; 34 u32 GetCP15Register(CP15Register reg) override;
diff --git a/src/core/arm/skyeye_common/arm_regformat.h b/src/core/arm/skyeye_common/arm_regformat.h
index d1c721809..38fa97ab9 100644
--- a/src/core/arm/skyeye_common/arm_regformat.h
+++ b/src/core/arm/skyeye_common/arm_regformat.h
@@ -55,7 +55,7 @@ enum {
55}; 55};
56 56
57// VFP system registers 57// VFP system registers
58enum { 58enum VFPSystemRegister {
59 VFP_FPSID, 59 VFP_FPSID,
60 VFP_FPSCR, 60 VFP_FPSCR,
61 VFP_FPEXC, 61 VFP_FPEXC,