From 0386e477a015ab08963181c1e60485a8096ef85d Mon Sep 17 00:00:00 2001 From: pineappleEA Date: Mon, 15 Nov 2021 23:04:15 +0100 Subject: [PATCH] early-access version 2203 --- README.md | 2 +- src/common/x64/native_clock.cpp | 7 ++----- src/core/hle/kernel/k_scheduler_lock.h | 9 ++++----- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ad26e1ce9..60683e82e 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 2202. +This is the source code for early-access 2203. ## Legal Notice diff --git a/src/common/x64/native_clock.cpp b/src/common/x64/native_clock.cpp index 6b43afb10..87de40624 100755 --- a/src/common/x64/native_clock.cpp +++ b/src/common/x64/native_clock.cpp @@ -58,8 +58,7 @@ u64 NativeClock::GetRTSC() { TimePoint new_time_point{}; TimePoint current_time_point{}; do { - std::ignore = Common::AtomicCompareAndSwap(current_time_point.pack.data(), time_point.pack, - u128{0}); // comparison value doesn't matter + current_time_point.pack = time_point.pack; _mm_mfence(); const u64 current_measure = __rdtsc(); u64 diff = current_measure - current_time_point.inner.last_measure; @@ -79,9 +78,7 @@ void NativeClock::Pause(bool is_paused) { TimePoint current_time_point{}; TimePoint new_time_point{}; do { - std::ignore = - Common::AtomicCompareAndSwap(current_time_point.pack.data(), time_point.pack, - u128{0}); // comparison value doesn't matter + current_time_point.pack = time_point.pack; new_time_point.pack = current_time_point.pack; _mm_mfence(); new_time_point.inner.last_measure = __rdtsc(); diff --git a/src/core/hle/kernel/k_scheduler_lock.h b/src/core/hle/kernel/k_scheduler_lock.h index 69dc7772f..c571f2992 100755 --- a/src/core/hle/kernel/k_scheduler_lock.h +++ b/src/core/hle/kernel/k_scheduler_lock.h @@ -4,7 +4,6 @@ #pragma once -#include #include "common/assert.h" #include "core/hle/kernel/k_spin_lock.h" #include "core/hle/kernel/k_thread.h" @@ -20,7 +19,7 @@ public: explicit KAbstractSchedulerLock(KernelCore& kernel_) : kernel{kernel_} {} bool IsLockedByCurrentThread() const { - return owner_thread.load(std::memory_order::consume) == GetCurrentThreadPointer(kernel); + return owner_thread == GetCurrentThreadPointer(kernel); } void Lock() { @@ -39,7 +38,7 @@ public: // Increment count, take ownership. lock_count = 1; - owner_thread.store(GetCurrentThreadPointer(kernel), std::memory_order::release); + owner_thread = GetCurrentThreadPointer(kernel); } } @@ -54,7 +53,7 @@ public: SchedulerType::UpdateHighestPriorityThreads(kernel); // Note that we no longer hold the lock, and unlock the spinlock. - owner_thread.store(nullptr, std::memory_order::release); + owner_thread = nullptr; spin_lock.Unlock(); // Enable scheduling, and perform a rescheduling operation. @@ -66,7 +65,7 @@ private: KernelCore& kernel; KAlignedSpinLock spin_lock{}; s32 lock_count{}; - std::atomic owner_thread{}; + KThread* owner_thread{}; }; } // namespace Kernel