aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/k_spin_lock.cpp
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2022-04-16 00:05:04 +0200
committerGitHub <noreply@github.com>2022-04-16 00:05:04 +0200
commit34710065e84ccc3de4433b7dd0ffb569e14788b8 (patch)
tree5e96d11546befd9671dff252e8e9e8a693b0bd1a /src/core/hle/kernel/k_spin_lock.cpp
parent8ae43a1be96c8673a182c2cf92bea4f1c5888adb (diff)
parent3f0b93925f082b6defe9454f16f1260539994217 (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.cpp39
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