[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:
@@ -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) {
|
||||
|
||||
@@ -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("}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user