summaryrefslogtreecommitdiff
path: root/src/common/arm64/native_clock.h
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2023-10-10 11:48:06 +0200
committerGitHub <noreply@github.com>2023-10-10 11:48:06 +0200
commitb28b05e2aafc2ee3fff67eee8d81ecf56267f2a3 (patch)
tree9e456a3b5837af571240a500b8960f65f7d5a73a /src/common/arm64/native_clock.h
parent8151a4d30121bb75500c94c1e70d665ba63146c8 (diff)
parent21bc2c14bc7408427a8b4851a7a3f15251f2afa8 (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.h47
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