arm_interface: Support retrieval/storage to CP15 registers
This commit is contained in:
		
							parent
							
								
									b7b8b67620
								
							
						
					
					
						commit
						c3ffe8f9c3
					
				@ -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…
	
		Reference in New Issue
	
	Block a user