diff options
| author | Maufeat <sahyno1996@gmail.com> | 2026-01-27 04:27:49 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-01-27 04:27:49 +0100 |
| commit | 998460b78bc6225561d1c39511069fc193f5fc71 (patch) | |
| tree | cef9cf972c4c48cf119dfe1e6467a99205a4c9f4 /src/core/arm | |
| parent | 52f69843471aa9b6054b335f7156292189d9c039 (diff) | |
[nce] use correct process memory in fault handlers (#3391)
Lets you correctly play games in qlaunch on NCE
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3391
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-committed-by: Maufeat <sahyno1996@gmail.com>
Diffstat (limited to 'src/core/arm')
| -rw-r--r-- | src/core/arm/nce/arm_nce.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/arm/nce/arm_nce.cpp b/src/core/arm/nce/arm_nce.cpp index cc1e016ba1..bbff9f2829 100644 --- a/src/core/arm/nce/arm_nce.cpp +++ b/src/core/arm/nce/arm_nce.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project @@ -144,7 +144,7 @@ bool ArmNce::HandleFailedGuestFault(GuestContext* guest_ctx, void* raw_info, voi bool ArmNce::HandleGuestAlignmentFault(GuestContext* guest_ctx, void* raw_info, void* raw_context) { auto& host_ctx = static_cast<ucontext_t*>(raw_context)->uc_mcontext; auto* fpctx = GetFloatingPointState(host_ctx); - auto& memory = guest_ctx->system->ApplicationMemory(); + auto& memory = guest_ctx->parent->m_running_thread->GetOwnerProcess()->GetMemory(); // Match and execute an instruction. auto next_pc = MatchAndExecuteOneInstruction(memory, &host_ctx, fpctx); @@ -164,7 +164,8 @@ bool ArmNce::HandleGuestAccessFault(GuestContext* guest_ctx, void* raw_info, voi // TODO: handle accesses which split a page? const Common::ProcessAddress addr = (reinterpret_cast<u64>(info->si_addr) & ~Memory::YUZU_PAGEMASK); - if (guest_ctx->system->ApplicationMemory().InvalidateNCE(addr, Memory::YUZU_PAGESIZE)) { + auto& memory = guest_ctx->parent->m_running_thread->GetOwnerProcess()->GetMemory(); + if (memory.InvalidateNCE(addr, Memory::YUZU_PAGESIZE)) { // We handled the access successfully and are returning to guest code. return true; } |
