aboutsummaryrefslogtreecommitdiff
path: root/src/common/spin_lock.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-01-13 04:17:27 +0100
committercrueter <crueter@eden-emu.dev>2026-01-13 04:17:27 +0100
commitb1daffad196c98b306a197efa56d48584516da56 (patch)
tree4e5189b4961157e27df179b3b3d3235ae6d72269 /src/common/spin_lock.cpp
parent3bae47cd94bd112ed3d9f28a6e97696e76151c58 (diff)
[common] move spinlock to pure header def (#3287)
inline justified because it's like 4-5 assembly instructions max Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3287 Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/common/spin_lock.cpp')
-rw-r--r--src/common/spin_lock.cpp53
1 files changed, 0 insertions, 53 deletions
diff --git a/src/common/spin_lock.cpp b/src/common/spin_lock.cpp
deleted file mode 100644
index b2ef4ea1d0..0000000000
--- a/src/common/spin_lock.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "common/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
-}
-
-} // Anonymous namespace
-
-namespace Common {
-
-void SpinLock::lock() {
- while (lck.test_and_set(std::memory_order_acquire)) {
- ThreadPause();
- }
-}
-
-void SpinLock::unlock() {
- lck.clear(std::memory_order_release);
-}
-
-bool SpinLock::try_lock() {
- if (lck.test_and_set(std::memory_order_acquire)) {
- return false;
- }
- return true;
-}
-
-} // namespace Common