aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/physical_core.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-04-06 19:12:51 +0200
committercrueter <crueter@eden-emu.dev>2026-04-06 19:12:51 +0200
commit148dc7b4806a216663f347d489869b59dc13925e (patch)
treedf5d8b514399ebd197f5ce46824ea0ef4ec8f516 /src/core/hle/kernel/physical_core.cpp
parent612a203ab26223436efc642ec2cc03282f6e4111 (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/hle/kernel/physical_core.cpp')
-rw-r--r--src/core/hle/kernel/physical_core.cpp18
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();
}