diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-01-13 04:17:27 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-01-13 04:17:27 +0100 |
| commit | b1daffad196c98b306a197efa56d48584516da56 (patch) | |
| tree | 4e5189b4961157e27df179b3b3d3235ae6d72269 /src/common/spin_lock.cpp | |
| parent | 3bae47cd94bd112ed3d9f28a6e97696e76151c58 (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.cpp | 53 |
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 |
