diff options
author | bunnei <bunneidev@gmail.com> | 2019-11-24 13:52:28 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-24 13:52:28 -0500 |
commit | 7298dcc016f586f97e14287587741ddcc9534340 (patch) | |
tree | ff254bcae21cc4845dbd32319f560a3e44e8525f /src | |
parent | ec8bfe94a736f47d60616456b440aa3cb16b3a90 (diff) | |
parent | 63248f4edd4c8c4ad47d0cc46e1f7c08371054d4 (diff) |
Merge pull request #3156 from bunnei/sys-ticks
svc: GetSystemTick should return cntpct_el0, not core ticks.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 8c67ada43..4c3b53a88 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -17,6 +17,7 @@ #include "core/core.h" #include "core/core_cpu.h" #include "core/core_timing.h" +#include "core/core_timing_util.h" #include "core/hle/kernel/address_arbiter.h" #include "core/hle/kernel/client_port.h" #include "core/hle/kernel/client_session.h" @@ -1777,7 +1778,9 @@ static u64 GetSystemTick(Core::System& system) { LOG_TRACE(Kernel_SVC, "called"); 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. core_timing.AddTicks(400); |