summaryrefslogtreecommitdiff
path: root/src/common/arm64/native_clock.cpp
diff options
context:
space:
mode:
authorFranco M <francomaro@gmail.com>2023-11-04 21:28:16 -0300
committerGitHub <noreply@github.com>2023-11-04 21:28:16 -0300
commit728aca770317b3f86961c8669ba9ae5c68570d3f (patch)
tree29adffcb1d264cc16cacb478a8f6645ef6259b3b /src/common/arm64/native_clock.cpp
parent7f62a48ab507d3874378c10944662d5b841c6c2e (diff)
parent940618a64dc048790291e240dca6a085a4f1c27c (diff)
Merge branch 'master' into new-shortcut
Diffstat (limited to 'src/common/arm64/native_clock.cpp')
-rw-r--r--src/common/arm64/native_clock.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/common/arm64/native_clock.cpp b/src/common/arm64/native_clock.cpp
index 88fdba527..f437d7187 100644
--- a/src/common/arm64/native_clock.cpp
+++ b/src/common/arm64/native_clock.cpp
@@ -1,6 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+#ifdef ANDROID
+#include <sys/system_properties.h>
+#endif
#include "common/arm64/native_clock.h"
namespace Common::Arm64 {
@@ -65,7 +68,23 @@ bool NativeClock::IsNative() const {
u64 NativeClock::GetHostCNTFRQ() {
u64 cntfrq_el0 = 0;
- asm("mrs %[cntfrq_el0], cntfrq_el0" : [cntfrq_el0] "=r"(cntfrq_el0));
+ std::string_view board{""};
+#ifdef ANDROID
+ char buffer[PROP_VALUE_MAX];
+ int len{__system_property_get("ro.product.board", buffer)};
+ board = std::string_view(buffer, static_cast<size_t>(len));
+#endif
+ if (board == "s5e9925") { // Exynos 2200
+ cntfrq_el0 = 25600000;
+ } else if (board == "exynos2100") { // Exynos 2100
+ cntfrq_el0 = 26000000;
+ } else if (board == "exynos9810") { // Exynos 9810
+ cntfrq_el0 = 26000000;
+ } else if (board == "s5e8825") { // Exynos 1280
+ cntfrq_el0 = 26000000;
+ } else {
+ asm("mrs %[cntfrq_el0], cntfrq_el0" : [cntfrq_el0] "=r"(cntfrq_el0));
+ }
return cntfrq_el0;
}