[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 <crueter@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie
2025-12-04 07:31:30 +01:00
committed by crueter
parent 7a98ee4ead
commit 09f03f5640
2 changed files with 3 additions and 10 deletions

View File

@@ -2364,9 +2364,7 @@ static void Call32(Core::System& system, u32 imm, std::span<uint64_t, 8> 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<uint64_t, 8> 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) {

View File

@@ -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("}")