[nce] Added "tainted" page fault handling inside dual channel

This commit is contained in:
CamilleLaVey
2026-03-08 15:55:06 -04:00
parent b7087a16ba
commit ca42578d4e
2 changed files with 30 additions and 2 deletions
+10
View File
@@ -1,9 +1,13 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <mutex>
#include <unordered_set>
#include "core/arm/arm_interface.h"
#include "core/arm/nce/guest_context.h"
@@ -77,6 +81,9 @@ private:
static void HandleHostAlignmentFault(int sig, void* info, void* raw_context);
static void HandleHostAccessFault(int sig, void* info, void* raw_context);
bool IsPreciseAccessPage(u64 addr) const;
void MarkPreciseAccessPage(u64 addr);
public:
Core::System& m_system;
@@ -88,6 +95,9 @@ public:
GuestContext m_guest_ctx{};
Kernel::KThread* m_running_thread{};
mutable std::mutex m_precise_pages_guard{};
std::unordered_set<u64> m_precise_pages{};
// Stack for signal processing.
std::unique_ptr<u8[]> m_stack{};
};