diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-04-06 19:12:51 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-04-06 19:12:51 +0200 |
| commit | 148dc7b4806a216663f347d489869b59dc13925e (patch) | |
| tree | df5d8b514399ebd197f5ce46824ea0ef4ec8f516 /src/core | |
| parent | 612a203ab26223436efc642ec2cc03282f6e4111 (diff) | |
[arm] remove vtable bounce hack (#3776)
horrible hack anyways, and PKZA shouldn't need it anymore
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3776
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/kernel/physical_core.cpp | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/src/core/hle/kernel/physical_core.cpp b/src/core/hle/kernel/physical_core.cpp index 77cdab76d7..e4aff43d82 100644 --- a/src/core/hle/kernel/physical_core.cpp +++ b/src/core/hle/kernel/physical_core.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 2020 yuzu Emulator Project @@ -103,26 +103,12 @@ void PhysicalCore::RunThread(Kernel::KThread* thread) { const bool data_abort = True(hr & Core::HaltReason::DataAbort); const bool interrupt = True(hr & Core::HaltReason::BreakLoop); - bool may_abort = true; // Ignore aborting virtual functions (for debugging) - if (prefetch_abort && ::Settings::values.vtable_bouncing) { - auto& lock = m_kernel.GlobalSchedulerContext().SchedulerLock(); - lock.Lock(); - Kernel::Svc::ThreadContext ctx; - interface->GetContext(ctx); - LOG_WARNING(Core_ARM, "vtable bouncing {:016X}", ctx.lr); - ctx.pc = ctx.lr; - ctx.r[0] = 0; - interface->SetContext(ctx); - lock.Unlock(); - may_abort = false; - } - // Since scheduling may occur here, we cannot use any cached // state after returning from calls we make. // Notify the debugger and go to sleep if a breakpoint was hit, // or if the thread is unable to continue for any reason. - if (breakpoint || (prefetch_abort && may_abort)) { + if (breakpoint || prefetch_abort) { if (breakpoint) { interface->RewindBreakpointInstruction(); } |
