diff options
| author | Fernando S <fsahmkow27@gmail.com> | 2022-04-16 00:05:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-16 00:05:04 +0200 |
| commit | 34710065e84ccc3de4433b7dd0ffb569e14788b8 (patch) | |
| tree | 5e96d11546befd9671dff252e8e9e8a693b0bd1a /src/core/hle/kernel/k_spin_lock.cpp | |
| parent | 8ae43a1be96c8673a182c2cf92bea4f1c5888adb (diff) | |
| parent | 3f0b93925f082b6defe9454f16f1260539994217 (diff) | |
Merge pull request #8172 from bunnei/kernel-mutex
hle: kernel: Use std::mutex instead of spin locks for most kernel locking.
Diffstat (limited to 'src/core/hle/kernel/k_spin_lock.cpp')
| -rw-r--r-- | src/core/hle/kernel/k_spin_lock.cpp | 39 |
1 files changed, 3 insertions, 36 deletions
diff --git a/src/core/hle/kernel/k_spin_lock.cpp b/src/core/hle/kernel/k_spin_lock.cpp index 4412aa4bb..527ff0f9f 100644 --- a/src/core/hle/kernel/k_spin_lock.cpp +++ b/src/core/hle/kernel/k_spin_lock.cpp @@ -4,51 +4,18 @@ #include "core/hle/kernel/k_spin_lock.h" -#if _MSC_VER -#include <intrin.h> -#if _M_AMD64 -#define __x86_64__ 1 -#endif -#if _M_ARM64 -#define __aarch64__ 1 -#endif -#else -#if __x86_64__ -#include <xmmintrin.h> -#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() { - 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 |
