arm_interface: Implement interface for retrieving VFP registers

This commit is contained in:
Lioncash 2015-08-06 21:24:25 -04:00
parent 5855cf087d
commit 3b457a5876
4 changed files with 49 additions and 1 deletions

View file

@ -61,6 +61,34 @@ public:
*/ */
virtual void SetReg(int index, u32 value) = 0; virtual void SetReg(int index, u32 value) = 0;
/**
* Gets the value of a VFP register
* @param index Register index (0-31)
* @return Returns the value in the register
*/
virtual u32 GetVFPReg(int index) const = 0;
/**
* Sets a VFP register to the given value
* @param index Register index (0-31)
* @param value Value to set register to
*/
virtual void SetVFPReg(int index, u32 value) = 0;
/**
* Gets the current value within a given VFP system register
* @param reg The VFP system register
* @return The value within the VFP system register
*/
virtual u32 GetVFPSystemReg(VFPSystemRegister reg) const = 0;
/**
* Sets the VFP system register to the given value
* @param reg The VFP system register
* @param value Value to set the VFP system register to
*/
virtual void SetVFPSystemReg(VFPSystemRegister reg, u32 value) = 0;
/** /**
* Get the current CPSR register * Get the current CPSR register
* @return Returns the value of the CPSR register * @return Returns the value of the CPSR register

View file

@ -40,6 +40,22 @@ void ARM_DynCom::SetReg(int index, u32 value) {
state->Reg[index] = value; state->Reg[index] = value;
} }
u32 ARM_DynCom::GetVFPReg(int index) const {
return state->ExtReg[index];
}
void ARM_DynCom::SetVFPReg(int index, u32 value) {
state->ExtReg[index] = value;
}
u32 ARM_DynCom::GetVFPSystemReg(VFPSystemRegister reg) const {
return state->VFP[reg];
}
void ARM_DynCom::SetVFPSystemReg(VFPSystemRegister reg, u32 value) {
state->VFP[reg] = value;
}
u32 ARM_DynCom::GetCPSR() const { u32 ARM_DynCom::GetCPSR() const {
return state->Cpsr; return state->Cpsr;
} }

View file

@ -25,6 +25,10 @@ public:
u32 GetPC() const override; u32 GetPC() const override;
u32 GetReg(int index) const override; u32 GetReg(int index) const override;
void SetReg(int index, u32 value) override; void SetReg(int index, u32 value) override;
u32 GetVFPReg(int index) const override;
void SetVFPReg(int index, u32 value) override;
u32 GetVFPSystemReg(VFPSystemRegister reg) const override;
void SetVFPSystemReg(VFPSystemRegister reg, u32 value) override;
u32 GetCPSR() const override; u32 GetCPSR() const override;
void SetCPSR(u32 cpsr) override; void SetCPSR(u32 cpsr) override;
u32 GetCP15Register(CP15Register reg) override; u32 GetCP15Register(CP15Register reg) override;

View file

@ -55,7 +55,7 @@ enum {
}; };
// VFP system registers // VFP system registers
enum { enum VFPSystemRegister {
VFP_FPSID, VFP_FPSID,
VFP_FPSCR, VFP_FPSCR,
VFP_FPEXC, VFP_FPEXC,