diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-05-17 02:17:11 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-05-17 02:17:11 +0200 |
| commit | 5aba461cb3dd9979633c0554e6be6b835c3710c9 (patch) | |
| tree | 09d54bd5b5eb7057a92f1ac76fb3208bc5483ef6 /src | |
| parent | 8330940eca609a0ee4568c187dc0d463e23f2e3c (diff) | |
[common/wall_clock] fix invariant RDTSC divide by 0 (#3961)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3961
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/wall_clock.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/common/wall_clock.cpp b/src/common/wall_clock.cpp index bff9e7b4f4..c06f9b6318 100644 --- a/src/common/wall_clock.cpp +++ b/src/common/wall_clock.cpp @@ -22,11 +22,11 @@ namespace Common { WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept : invariant{invariant_} , rdtsc_frequency{rdtsc_frequency_} - , ns_rdtsc_factor{GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)} - , us_rdtsc_factor{GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)} - , ms_rdtsc_factor{GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)} - , cntpct_rdtsc_factor{GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)} - , gputick_rdtsc_factor{GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)} + , ns_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)} + , us_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)} + , ms_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)} + , cntpct_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)} + , gputick_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)} {} std::chrono::nanoseconds WallClock::GetTimeNS() const { @@ -186,7 +186,7 @@ bool WallClock::IsNative() const { WallClock CreateOptimalClock() noexcept { #if defined(ARCHITECTURE_x86_64) auto const& caps = GetCPUCaps(); - return WallClock(!(caps.invariant_tsc && caps.tsc_frequency >= std::nano::den), std::max<u64>(caps.tsc_frequency, 1)); + return WallClock(!(caps.invariant_tsc && caps.tsc_frequency >= std::nano::den), caps.tsc_frequency); #elif defined(HAS_NCE) return WallClock(false, 1); #else |
