Browse Source

Native Clock: remove inaccuracy mask.

nce_cpp
Fernando Sahmkow 4 years ago
parent
commit
eadcaab9bd
  1. 2
      src/common/x64/native_clock.cpp
  2. 5
      src/common/x64/native_clock.h

2
src/common/x64/native_clock.cpp

@ -90,7 +90,7 @@ u64 NativeClock::GetRTSC() {
} while (!time_point.compare_exchange_weak( } while (!time_point.compare_exchange_weak(
current_time_point, new_time_point, std::memory_order_release, std::memory_order_acquire)); current_time_point, new_time_point, std::memory_order_release, std::memory_order_acquire));
/// The clock cannot be more precise than the guest timer, remove the lower bits /// The clock cannot be more precise than the guest timer, remove the lower bits
return new_time_point.accumulated_ticks & inaccuracy_mask;
return new_time_point.accumulated_ticks;
} }
void NativeClock::Pause(bool is_paused) { void NativeClock::Pause(bool is_paused) {

5
src/common/x64/native_clock.h

@ -34,11 +34,6 @@ private:
u64 accumulated_ticks{}; u64 accumulated_ticks{};
}; };
/// value used to reduce the native clocks accuracy as some apss rely on
/// undefined behavior where the level of accuracy in the clock shouldn't
/// be higher.
static constexpr u64 inaccuracy_mask = ~(UINT64_C(0x400) - 1);
std::atomic<TimePoint> time_point; std::atomic<TimePoint> time_point;
// factors // factors
u64 clock_rtsc_factor{}; u64 clock_rtsc_factor{};

Loading…
Cancel
Save