diff options
| author | 2018-09-29 17:58:26 -0400 | |
|---|---|---|
| committer | 2018-09-30 02:29:57 -0400 | |
| commit | 16145e2f21d7f7208c95d164a0fe2b1a5d8c20d6 (patch) | |
| tree | c22765539200de9bbc95a3a60f4b3b158311c96e /src/core/arm/arm_interface.h | |
| parent | Merge pull request #1414 from lioncash/ref (diff) | |
| download | yuzu-16145e2f21d7f7208c95d164a0fe2b1a5d8c20d6.tar.gz yuzu-16145e2f21d7f7208c95d164a0fe2b1a5d8c20d6.tar.xz yuzu-16145e2f21d7f7208c95d164a0fe2b1a5d8c20d6.zip | |
arm_interface: Add missing fpsr/tpidr members to the ThreadContext struct
Internally within the kernel, it also includes a member variable for the
floating-point status register, and TPIDR, so we should do the same here to match
it.
While we're at it, also fix up the size of the struct and add a static
assertion to ensure it always stays the correct size.
Diffstat (limited to 'src/core/arm/arm_interface.h')
| -rw-r--r-- | src/core/arm/arm_interface.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h index 16d528994..59da33f30 100644 --- a/src/core/arm/arm_interface.h +++ b/src/core/arm/arm_interface.h | |||
| @@ -22,10 +22,16 @@ public: | |||
| 22 | std::array<u64, 31> cpu_registers; | 22 | std::array<u64, 31> cpu_registers; |
| 23 | u64 sp; | 23 | u64 sp; |
| 24 | u64 pc; | 24 | u64 pc; |
| 25 | u64 pstate; | 25 | u32 pstate; |
| 26 | std::array<u8, 4> padding; | ||
| 26 | std::array<u128, 32> vector_registers; | 27 | std::array<u128, 32> vector_registers; |
| 27 | u64 fpcr; | 28 | u32 fpcr; |
| 29 | u32 fpsr; | ||
| 30 | u64 tpidr; | ||
| 28 | }; | 31 | }; |
| 32 | // Internally within the kernel, it expects the AArch64 version of the | ||
| 33 | // thread context to be 800 bytes in size. | ||
| 34 | static_assert(sizeof(ThreadContext) == 0x320); | ||
| 29 | 35 | ||
| 30 | /// Runs the CPU until an event happens | 36 | /// Runs the CPU until an event happens |
| 31 | virtual void Run() = 0; | 37 | virtual void Run() = 0; |