diff options
author | Fernando S <fsahmkow27@gmail.com> | 2023-10-10 11:48:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-10 11:48:06 +0200 |
commit | b28b05e2aafc2ee3fff67eee8d81ecf56267f2a3 (patch) | |
tree | 9e456a3b5837af571240a500b8960f65f7d5a73a /src/common/arm64/native_clock.h | |
parent | 8151a4d30121bb75500c94c1e70d665ba63146c8 (diff) | |
parent | 21bc2c14bc7408427a8b4851a7a3f15251f2afa8 (diff) |
Merge pull request #11718 from liamwhite/arm64-native-clock
common: add arm64 native clock
Diffstat (limited to 'src/common/arm64/native_clock.h')
-rw-r--r-- | src/common/arm64/native_clock.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/common/arm64/native_clock.h b/src/common/arm64/native_clock.h new file mode 100644 index 000000000..a28b419f2 --- /dev/null +++ b/src/common/arm64/native_clock.h @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "common/wall_clock.h" + +namespace Common::Arm64 { + +class NativeClock final : public WallClock { +public: + explicit NativeClock(); + + std::chrono::nanoseconds GetTimeNS() const override; + + std::chrono::microseconds GetTimeUS() const override; + + std::chrono::milliseconds GetTimeMS() const override; + + u64 GetCNTPCT() const override; + + u64 GetGPUTick() const override; + + u64 GetHostTicksNow() const override; + + u64 GetHostTicksElapsed() const override; + + bool IsNative() const override; + + static u64 GetHostCNTFRQ(); + +public: + using FactorType = unsigned __int128; + + FactorType GetGuestCNTFRQFactor() const { + return guest_cntfrq_factor; + } + +private: + FactorType ns_cntfrq_factor; + FactorType us_cntfrq_factor; + FactorType ms_cntfrq_factor; + FactorType guest_cntfrq_factor; + FactorType gputick_cntfrq_factor; +}; + +} // namespace Common::Arm64 |