mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	arm_interface: Support retrieval/storage to CP15 registers
This commit is contained in:
		
							parent
							
								
									b7b8b67620
								
							
						
					
					
						commit
						c3ffe8f9c3
					
				
					 3 changed files with 25 additions and 0 deletions
				
			
		|  | @ -6,6 +6,7 @@ | |||
| 
 | ||||
| #include "common/common.h" | ||||
| #include "common/common_types.h" | ||||
| #include "core/arm/skyeye_common/arm_regformat.h" | ||||
| 
 | ||||
| namespace Core { | ||||
|     struct ThreadContext; | ||||
|  | @ -73,6 +74,20 @@ public: | |||
|      */ | ||||
|     virtual void SetCPSR(u32 cpsr) = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Gets the value stored in a CP15 register. | ||||
|      * @param reg The CP15 register to retrieve the value from. | ||||
|      * @return the value stored in the given CP15 register. | ||||
|      */ | ||||
|     virtual u32 GetCP15Register(CP15Register reg) = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Stores the given value into the indicated CP15 register. | ||||
|      * @param reg   The CP15 register to store the value into. | ||||
|      * @param value The value to store into the CP15 register. | ||||
|      */ | ||||
|     virtual void SetCP15Register(CP15Register reg, u32 value) = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Advance the CPU core by the specified number of ticks (e.g. to simulate CPU execution time) | ||||
|      * @param ticks Number of ticks to advance the CPU core | ||||
|  |  | |||
|  | @ -68,6 +68,14 @@ void ARM_DynCom::SetCPSR(u32 cpsr) { | |||
|     state->Cpsr = cpsr; | ||||
| } | ||||
| 
 | ||||
| u32 ARM_DynCom::GetCP15Register(CP15Register reg) { | ||||
|     return state->CP15[reg]; | ||||
| } | ||||
| 
 | ||||
| void ARM_DynCom::SetCP15Register(CP15Register reg, u32 value) { | ||||
|     state->CP15[reg] = value; | ||||
| } | ||||
| 
 | ||||
| void ARM_DynCom::AddTicks(u64 ticks) { | ||||
|     down_count -= ticks; | ||||
|     if (down_count < 0) | ||||
|  |  | |||
|  | @ -22,6 +22,8 @@ public: | |||
|     void SetReg(int index, u32 value) override; | ||||
|     u32 GetCPSR() const override; | ||||
|     void SetCPSR(u32 cpsr) override; | ||||
|     u32 GetCP15Register(CP15Register reg) override; | ||||
|     void SetCP15Register(CP15Register reg, u32 value) override; | ||||
| 
 | ||||
|     void AddTicks(u64 ticks) override; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue