From 67b8265bd669618294aad379189f79400f6ea461 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 7 Dec 2019 21:12:14 -0500 Subject: [PATCH] kernel/svc: Provide implementations for svcDumpInfo/svcDumpInfoNew These are fairly trivial to implement, we can just do nothing. This also provides a spot for us to potentially dump out any relevant info in the future (e.g. for debugging purposes with homebrew, etc). While we're at it, we can also correct the names of both of these supervisor calls. --- src/core/hle/kernel/svc.cpp | 15 +++++++++++++-- src/core/hle/kernel/svc_wrap.h | 11 +++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index bd25de478..35ff26c39 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -1781,6 +1781,17 @@ static ResultCode SignalToAddress(Core::System& system, VAddr address, u32 type, return address_arbiter.SignalToAddress(address, signal_type, value, num_to_wake); } +static void KernelDebug([[maybe_unused]] Core::System& system, + [[maybe_unused]] u32 kernel_debug_type, [[maybe_unused]] u64 param1, + [[maybe_unused]] u64 param2, [[maybe_unused]] u64 param3) { + // Intentionally do nothing, as this does nothing in released kernel binaries. +} + +static void ChangeKernelTraceState([[maybe_unused]] Core::System& system, + [[maybe_unused]] u32 trace_state) { + // Intentionally do nothing, as this does nothing in released kernel binaries. +} + /// This returns the total CPU ticks elapsed since the CPU was powered-on static u64 GetSystemTick(Core::System& system) { LOG_TRACE(Kernel_SVC, "called"); @@ -2418,8 +2429,8 @@ static const FunctionDef SVC_Table[] = { {0x39, nullptr, "Unknown"}, {0x3A, nullptr, "Unknown"}, {0x3B, nullptr, "Unknown"}, - {0x3C, nullptr, "DumpInfo"}, - {0x3D, nullptr, "DumpInfoNew"}, + {0x3C, SvcWrap, "KernelDebug"}, + {0x3D, SvcWrap, "ChangeKernelTraceState"}, {0x3E, nullptr, "Unknown"}, {0x3F, nullptr, "Unknown"}, {0x40, nullptr, "CreateSession"}, diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h index c2d8d0dc3..9452e3b6f 100644 --- a/src/core/hle/kernel/svc_wrap.h +++ b/src/core/hle/kernel/svc_wrap.h @@ -311,6 +311,17 @@ void SvcWrap(Core::System& system) { func(system); } +template +void SvcWrap(Core::System& system) { + func(system, static_cast(Param(system, 0))); +} + +template +void SvcWrap(Core::System& system) { + func(system, static_cast(Param(system, 0)), Param(system, 1), Param(system, 2), + Param(system, 3)); +} + template void SvcWrap(Core::System& system) { func(system, static_cast(Param(system, 0)));