forked from suyu/suyu
arm_interface: Implement interface for retrieving VFP registers
This commit is contained in:
parent
5855cf087d
commit
3b457a5876
4 changed files with 49 additions and 1 deletions
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue