From 8deaac8bd1707f56f29d61e427ad53964a0920fd Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 7 Apr 2022 16:01:26 -0700 Subject: hle: kernel: Use std::mutex instead of spin locks for most kernel locking. --- src/core/hle/kernel/k_spin_lock.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'src/core/hle/kernel/k_spin_lock.cpp') diff --git a/src/core/hle/kernel/k_spin_lock.cpp b/src/core/hle/kernel/k_spin_lock.cpp index 4412aa4bb..4df2e5c1a 100644 --- a/src/core/hle/kernel/k_spin_lock.cpp +++ b/src/core/hle/kernel/k_spin_lock.cpp @@ -35,20 +35,15 @@ void ThreadPause() { namespace Kernel { void KSpinLock::Lock() { - while (lck.test_and_set(std::memory_order_acquire)) { - ThreadPause(); - } + lck.lock(); } void KSpinLock::Unlock() { - lck.clear(std::memory_order_release); + lck.unlock(); } bool KSpinLock::TryLock() { - if (lck.test_and_set(std::memory_order_acquire)) { - return false; - } - return true; + return lck.try_lock(); } } // namespace Kernel -- cgit v1.2.3 From ae38b8bf5eb8baed79b70974fb93705db6495807 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sun, 10 Apr 2022 16:51:42 -0700 Subject: hle: kernel: k_spin_lock: Remove unused ThreadPause. --- src/core/hle/kernel/k_spin_lock.cpp | 28 ---------------------------- 1 file changed, 28 deletions(-) (limited to 'src/core/hle/kernel/k_spin_lock.cpp') diff --git a/src/core/hle/kernel/k_spin_lock.cpp b/src/core/hle/kernel/k_spin_lock.cpp index 4df2e5c1a..527ff0f9f 100644 --- a/src/core/hle/kernel/k_spin_lock.cpp +++ b/src/core/hle/kernel/k_spin_lock.cpp @@ -4,34 +4,6 @@ #include "core/hle/kernel/k_spin_lock.h" -#if _MSC_VER -#include -#if _M_AMD64 -#define __x86_64__ 1 -#endif -#if _M_ARM64 -#define __aarch64__ 1 -#endif -#else -#if __x86_64__ -#include -#endif -#endif - -namespace { - -void ThreadPause() { -#if __x86_64__ - _mm_pause(); -#elif __aarch64__ && _MSC_VER - __yield(); -#elif __aarch64__ - asm("yield"); -#endif -} - -} // namespace - namespace Kernel { void KSpinLock::Lock() { -- cgit v1.2.3