diff options
| author | 2015-08-13 18:13:25 -0400 | |
|---|---|---|
| committer | 2015-08-13 18:13:25 -0400 | |
| commit | cebf245504b75469f19d3cc0a6f2f66aefa66947 (patch) | |
| tree | 4026f74849517f02575bb34a8d4d35d50daaccfc /src/core | |
| parent | Merge pull request #1030 from archshift/force-inline (diff) | |
| parent | registers: Support viewing VFP registers (diff) | |
| download | yuzu-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.h | 28 | ||||
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom.cpp | 16 | ||||
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom.h | 4 | ||||
| -rw-r--r-- | src/core/arm/skyeye_common/arm_regformat.h | 2 |
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 | ||
| 43 | u32 ARM_DynCom::GetVFPReg(int index) const { | ||
| 44 | return state->ExtReg[index]; | ||
| 45 | } | ||
| 46 | |||
| 47 | void ARM_DynCom::SetVFPReg(int index, u32 value) { | ||
| 48 | state->ExtReg[index] = value; | ||
| 49 | } | ||
| 50 | |||
| 51 | u32 ARM_DynCom::GetVFPSystemReg(VFPSystemRegister reg) const { | ||
| 52 | return state->VFP[reg]; | ||
| 53 | } | ||
| 54 | |||
| 55 | void ARM_DynCom::SetVFPSystemReg(VFPSystemRegister reg, u32 value) { | ||
| 56 | state->VFP[reg] = value; | ||
| 57 | } | ||
| 58 | |||
| 43 | u32 ARM_DynCom::GetCPSR() const { | 59 | u32 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 |
| 58 | enum { | 58 | enum VFPSystemRegister { |
| 59 | VFP_FPSID, | 59 | VFP_FPSID, |
| 60 | VFP_FPSCR, | 60 | VFP_FPSCR, |
| 61 | VFP_FPEXC, | 61 | VFP_FPEXC, |