From 09f03f5640db16a6fe3526c50250741a877377c1 Mon Sep 17 00:00:00 2001 From: lizzie Date: Thu, 4 Dec 2025 07:31:30 +0100 Subject: [PATCH] [hle/kernel] mark invalid SVC paths as unreachable (#3023) Should improve performance of SVC by a very, very tiny margin. Codegen seems to be better from the exclusion of all domains beyond >=0x92 Signed-off-by: lizzie lizzie@eden-emu.dev Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3023 Reviewed-by: crueter Reviewed-by: CamilleLaVey Co-authored-by: lizzie Co-committed-by: lizzie --- src/core/hle/kernel/svc.cpp | 8 ++------ tools/svc_generator.py | 5 +---- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index ed0fae5332..faf6a6432d 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -2364,9 +2364,7 @@ static void Call32(Core::System& system, u32 imm, std::span args) { case SvcId::CallSecureMonitor: return SvcWrap_CallSecureMonitor64From32(system, args); case SvcId::MapInsecureMemory: return SvcWrap_MapInsecureMemory64From32(system, args); case SvcId::UnmapInsecureMemory: return SvcWrap_UnmapInsecureMemory64From32(system, args); - default: - LOG_CRITICAL(Kernel_SVC, "Unknown SVC {:x}!", imm); - break; + default: UNREACHABLE_MSG("Unhandled SVC {:#x}!", imm); } } @@ -2495,9 +2493,7 @@ static void Call64(Core::System& system, u32 imm, std::span args) { case SvcId::CallSecureMonitor: return SvcWrap_CallSecureMonitor64(system, args); case SvcId::MapInsecureMemory: return SvcWrap_MapInsecureMemory64(system, args); case SvcId::UnmapInsecureMemory: return SvcWrap_UnmapInsecureMemory64(system, args); - default: - LOG_CRITICAL(Kernel_SVC, "Unknown SVC {:x}!", imm); - break; + default: UNREACHABLE_MSG("Unhandled SVC {:#x}!", imm); } } void Call(Core::System& system, u32 imm) { diff --git a/tools/svc_generator.py b/tools/svc_generator.py index 11e551ec78..d00fe0ba63 100755 --- a/tools/svc_generator.py +++ b/tools/svc_generator.py @@ -597,10 +597,7 @@ def emit_call(bitness, names, suffix): for _, name in names: lines.append(f"{indent}case SvcId::{name}: return SvcWrap_{name}{suffix}(system, args);") - lines.append(f"{indent}default:") - lines.append( - f"{indent*2}LOG_CRITICAL(Kernel_SVC, \"Unknown SVC {{:x}}!\", imm);") - lines.append(f"{indent*2}break;") + lines.append(f"{indent}default: UNREACHABLE_MSG(\"Unhandled SVC {{:#x}}\", imm);") lines.append(f"{indent}}}") lines.append("}")