Explorar o código

Merge pull request #3156 from bunnei/sys-ticks

svc: GetSystemTick should return cntpct_el0, not core ticks.
bunnei %!s(int64=6) %!d(string=hai) anos
pai
achega
7298dcc016
Modificáronse 1 ficheiros con 4 adicións e 1 borrados
  1. 4 1
      src/core/hle/kernel/svc.cpp

+ 4 - 1
src/core/hle/kernel/svc.cpp

@@ -17,6 +17,7 @@
 #include "core/core.h"
 #include "core/core.h"
 #include "core/core_cpu.h"
 #include "core/core_cpu.h"
 #include "core/core_timing.h"
 #include "core/core_timing.h"
+#include "core/core_timing_util.h"
 #include "core/hle/kernel/address_arbiter.h"
 #include "core/hle/kernel/address_arbiter.h"
 #include "core/hle/kernel/client_port.h"
 #include "core/hle/kernel/client_port.h"
 #include "core/hle/kernel/client_session.h"
 #include "core/hle/kernel/client_session.h"
@@ -1777,7 +1778,9 @@ static u64 GetSystemTick(Core::System& system) {
     LOG_TRACE(Kernel_SVC, "called");
     LOG_TRACE(Kernel_SVC, "called");
 
 
     auto& core_timing = system.CoreTiming();
     auto& core_timing = system.CoreTiming();
-    const u64 result{core_timing.GetTicks()};
+
+    // Returns the value of cntpct_el0 (https://switchbrew.org/wiki/SVC#svcGetSystemTick)
+    const u64 result{Core::Timing::CpuCyclesToClockCycles(system.CoreTiming().GetTicks())};
 
 
     // Advance time to defeat dumb games that busy-wait for the frame to end.
     // Advance time to defeat dumb games that busy-wait for the frame to end.
     core_timing.AddTicks(400);
     core_timing.AddTicks(400);