diff options
Diffstat (limited to 'src/core/arm/arm_interface.h')
| -rw-r--r-- | src/core/arm/arm_interface.h | 22 |
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 | |||
| 160 | protected: | 162 | protected: |
| 161 | /** | 163 | /** |
| 162 | * Executes the given number of instructions | 164 | * Executes the given number of instructions |