mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-02-04 02:51:18 +01:00
[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::CallSecureMonitor: return SvcWrap_CallSecureMonitor64From32(system, args);
|
||||||
case SvcId::MapInsecureMemory: return SvcWrap_MapInsecureMemory64From32(system, args);
|
case SvcId::MapInsecureMemory: return SvcWrap_MapInsecureMemory64From32(system, args);
|
||||||
case SvcId::UnmapInsecureMemory: return SvcWrap_UnmapInsecureMemory64From32(system, args);
|
case SvcId::UnmapInsecureMemory: return SvcWrap_UnmapInsecureMemory64From32(system, args);
|
||||||
default:
|
default: UNREACHABLE_MSG("Unhandled SVC {:#x}!", imm);
|
||||||
LOG_CRITICAL(Kernel_SVC, "Unknown SVC {:x}!", imm);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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::CallSecureMonitor: return SvcWrap_CallSecureMonitor64(system, args);
|
||||||
case SvcId::MapInsecureMemory: return SvcWrap_MapInsecureMemory64(system, args);
|
case SvcId::MapInsecureMemory: return SvcWrap_MapInsecureMemory64(system, args);
|
||||||
case SvcId::UnmapInsecureMemory: return SvcWrap_UnmapInsecureMemory64(system, args);
|
case SvcId::UnmapInsecureMemory: return SvcWrap_UnmapInsecureMemory64(system, args);
|
||||||
default:
|
default: UNREACHABLE_MSG("Unhandled SVC {:#x}!", imm);
|
||||||
LOG_CRITICAL(Kernel_SVC, "Unknown SVC {:x}!", imm);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Call(Core::System& system, u32 imm) {
|
void Call(Core::System& system, u32 imm) {
|
||||||
|
|||||||
@@ -597,10 +597,7 @@ def emit_call(bitness, names, suffix):
|
|||||||
for _, name in names:
|
for _, name in names:
|
||||||
lines.append(f"{indent}case SvcId::{name}: return SvcWrap_{name}{suffix}(system, args);")
|
lines.append(f"{indent}case SvcId::{name}: return SvcWrap_{name}{suffix}(system, args);")
|
||||||
|
|
||||||
lines.append(f"{indent}default:")
|
lines.append(f"{indent}default: UNREACHABLE_MSG(\"Unhandled SVC {{:#x}}\", imm);")
|
||||||
lines.append(
|
|
||||||
f"{indent*2}LOG_CRITICAL(Kernel_SVC, \"Unknown SVC {{:x}}!\", imm);")
|
|
||||||
lines.append(f"{indent*2}break;")
|
|
||||||
lines.append(f"{indent}}}")
|
lines.append(f"{indent}}}")
|
||||||
lines.append("}")
|
lines.append("}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user