mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-06-06 01:13:45 -04:00
[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>
This commit is contained in:
parent
8330940eca
commit
5aba461cb3
1 changed files with 6 additions and 6 deletions
|
|
@ -22,11 +22,11 @@ namespace Common {
|
||||||
WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept
|
WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept
|
||||||
: invariant{invariant_}
|
: invariant{invariant_}
|
||||||
, rdtsc_frequency{rdtsc_frequency_}
|
, rdtsc_frequency{rdtsc_frequency_}
|
||||||
, ns_rdtsc_factor{GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)}
|
, ns_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)}
|
||||||
, us_rdtsc_factor{GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)}
|
, us_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)}
|
||||||
, ms_rdtsc_factor{GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)}
|
, ms_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)}
|
||||||
, cntpct_rdtsc_factor{GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)}
|
, cntpct_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)}
|
||||||
, gputick_rdtsc_factor{GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)}
|
, gputick_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
std::chrono::nanoseconds WallClock::GetTimeNS() const {
|
std::chrono::nanoseconds WallClock::GetTimeNS() const {
|
||||||
|
|
@ -186,7 +186,7 @@ bool WallClock::IsNative() const {
|
||||||
WallClock CreateOptimalClock() noexcept {
|
WallClock CreateOptimalClock() noexcept {
|
||||||
#if defined(ARCHITECTURE_x86_64)
|
#if defined(ARCHITECTURE_x86_64)
|
||||||
auto const& caps = GetCPUCaps();
|
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)
|
#elif defined(HAS_NCE)
|
||||||
return WallClock(false, 1);
|
return WallClock(false, 1);
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue