mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	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; | ||||
| 
 | ||||
|     /**
 | ||||
|      * 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 | ||||
|      * @return Returns the value of the CPSR register | ||||
|  |  | |||
|  | @ -40,6 +40,22 @@ void ARM_DynCom::SetReg(int index, u32 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 { | ||||
|     return state->Cpsr; | ||||
| } | ||||
|  |  | |||
|  | @ -25,6 +25,10 @@ public: | |||
|     u32 GetPC() const override; | ||||
|     u32 GetReg(int index) const 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; | ||||
|     void SetCPSR(u32 cpsr) override; | ||||
|     u32 GetCP15Register(CP15Register reg) override; | ||||
|  |  | |||
|  | @ -55,7 +55,7 @@ enum { | |||
| }; | ||||
| 
 | ||||
| // VFP system registers
 | ||||
| enum { | ||||
| enum VFPSystemRegister { | ||||
|     VFP_FPSID, | ||||
|     VFP_FPSCR, | ||||
|     VFP_FPEXC, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue