summaryrefslogtreecommitdiff
path: root/src/core/arm/arm_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/arm/arm_interface.h')
-rw-r--r--src/core/arm/arm_interface.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h
index f613556dd..0b3096347 100644
--- a/src/core/arm/arm_interface.h
+++ b/src/core/arm/arm_interface.h
@@ -5,6 +5,7 @@
5#pragma once 5#pragma once
6 6
7#include "common/common_types.h" 7#include "common/common_types.h"
8#include "core/hle/kernel/vm_manager.h"
8#include "core/arm/skyeye_common/arm_regformat.h" 9#include "core/arm/skyeye_common/arm_regformat.h"
9#include "core/arm/skyeye_common/vfp/asm_vfp.h" 10#include "core/arm/skyeye_common/vfp/asm_vfp.h"
10 11
@@ -19,10 +20,11 @@ public:
19 u64 sp; 20 u64 sp;
20 u64 pc; 21 u64 pc;
21 u64 cpsr; 22 u64 cpsr;
22 u64 fpu_registers[64]; 23 u128 fpu_registers[32];
23 u64 fpscr; 24 u64 fpscr;
24 u64 fpexc; 25 u64 fpexc;
25 26
27
26 // TODO(bunnei): Fix once we have proper support for tpidrro_el0, etc. in the JIT 28 // TODO(bunnei): Fix once we have proper support for tpidrro_el0, etc. in the JIT
27 VAddr tls_address; 29 VAddr tls_address;
28 }; 30 };
@@ -41,9 +43,14 @@ public:
41 Run(1); 43 Run(1);
42 } 44 }
43 45
46 virtual void MapBackingMemory(VAddr address, size_t size, u8* memory, Kernel::VMAPermission perms) {}
47
44 /// Clear all instruction cache 48 /// Clear all instruction cache
45 virtual void ClearInstructionCache() = 0; 49 virtual void ClearInstructionCache() = 0;
46 50
51 /// Notify CPU emulation that page tables have changed
52 virtual void PageTableChanged() = 0;
53
47 /** 54 /**
48 * Set the Program Counter to an address 55 * Set the Program Counter to an address
49 * @param addr Address to set PC to 56 * @param addr Address to set PC to
@@ -70,6 +77,10 @@ public:
70 */ 77 */
71 virtual void SetReg(int index, u64 value) = 0; 78 virtual void SetReg(int index, u64 value) = 0;
72 79
80 virtual const u128& GetExtReg(int index) const = 0;
81
82 virtual void SetExtReg(int index, u128& value) = 0;
83
73 /** 84 /**
74 * Gets the value of a VFP register 85 * Gets the value of a VFP register
75 * @param index Register index (0-31) 86 * @param index Register index (0-31)
@@ -129,12 +140,6 @@ public:
129 virtual void SetTlsAddress(VAddr address) = 0; 140 virtual void SetTlsAddress(VAddr address) = 0;
130 141
131 /** 142 /**
132 * Advance the CPU core by the specified number of ticks (e.g. to simulate CPU execution time)
133 * @param ticks Number of ticks to advance the CPU core
134 */
135 virtual void AddTicks(u64 ticks) = 0;
136
137 /**
138 * Saves the current CPU context 143 * Saves the current CPU context
139 * @param ctx Thread context to save 144 * @param ctx Thread context to save
140 */ 145 */
@@ -154,9 +159,6 @@ public:
154 return num_instructions; 159 return num_instructions;
155 } 160 }
156 161
157 s64 down_count = 0; ///< A decreasing counter of remaining cycles before the next event,
158 /// decreased by the cpu run loop
159
160protected: 162protected:
161 /** 163 /**
162 * Executes the given number of instructions 164 * Executes the given number of instructions