From 16145e2f21d7f7208c95d164a0fe2b1a5d8c20d6 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 29 Sep 2018 17:58:26 -0400 Subject: 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. --- src/core/arm/arm_interface.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/core/arm/arm_interface.h') 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: std::array cpu_registers; u64 sp; u64 pc; - u64 pstate; + u32 pstate; + std::array padding; std::array vector_registers; - u64 fpcr; + u32 fpcr; + u32 fpsr; + u64 tpidr; }; + // Internally within the kernel, it expects the AArch64 version of the + // thread context to be 800 bytes in size. + static_assert(sizeof(ThreadContext) == 0x320); /// Runs the CPU until an event happens virtual void Run() = 0; -- cgit v1.2.3