summaryrefslogtreecommitdiffstats
path: root/src/core/arm/nce/arm_nce.h
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-11-30 20:05:02 +0100
committerLiam <byteslice@airmail.cc>2023-12-11 00:23:42 +0100
commitbd599343505d202dc3d8226ca80d5f1af0247bf2 (patch)
treead5dba92452f2b8909a1ac958237d2bbdfa54838 /src/core/arm/nce/arm_nce.h
parentMerge pull request #12322 from liamwhite/savedata-absurdity (diff)
downloadyuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.tar
yuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.tar.gz
yuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.tar.bz2
yuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.tar.lz
yuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.tar.xz
yuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.tar.zst
yuzu-bd599343505d202dc3d8226ca80d5f1af0247bf2.zip
Diffstat (limited to 'src/core/arm/nce/arm_nce.h')
-rw-r--r--src/core/arm/nce/arm_nce.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/core/arm/nce/arm_nce.h b/src/core/arm/nce/arm_nce.h
index f55c10d1d..be9b304c4 100644
--- a/src/core/arm/nce/arm_nce.h
+++ b/src/core/arm/nce/arm_nce.h
@@ -61,7 +61,8 @@ private:
static void ReturnToRunCodeByExceptionLevelChangeSignalHandler(int sig, void* info,
void* raw_context);
static void BreakFromRunCodeSignalHandler(int sig, void* info, void* raw_context);
- static void GuestFaultSignalHandler(int sig, void* info, void* raw_context);
+ static void GuestAlignmentFaultSignalHandler(int sig, void* info, void* raw_context);
+ static void GuestAccessFaultSignalHandler(int sig, void* info, void* raw_context);
static void LockThreadParameters(void* tpidr);
static void UnlockThreadParameters(void* tpidr);
@@ -70,8 +71,11 @@ private:
// C++ implementation functions for assembly definitions.
static void* RestoreGuestContext(void* raw_context);
static void SaveGuestContext(GuestContext* ctx, void* raw_context);
- static bool HandleGuestFault(GuestContext* ctx, void* info, void* raw_context);
- static void HandleHostFault(int sig, void* info, void* raw_context);
+ static bool HandleFailedGuestFault(GuestContext* ctx, void* info, void* raw_context);
+ static bool HandleGuestAlignmentFault(GuestContext* ctx, void* info, void* raw_context);
+ static bool HandleGuestAccessFault(GuestContext* ctx, void* info, void* raw_context);
+ static void HandleHostAlignmentFault(int sig, void* info, void* raw_context);
+ static void HandleHostAccessFault(int sig, void* info, void* raw_context);
public:
Core::System& m_system;
@@ -83,6 +87,9 @@ public:
// Core context.
GuestContext m_guest_ctx{};
Kernel::KThread* m_running_thread{};
+
+ // Stack for signal processing.
+ std::unique_ptr<u8[]> m_stack{};
};
} // namespace Core