diff options
Diffstat (limited to 'arch/x86_64/lock.s')
-rw-r--r-- | arch/x86_64/lock.s | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/x86_64/lock.s b/arch/x86_64/lock.s new file mode 100644 index 0000000..b63f078 --- /dev/null +++ b/arch/x86_64/lock.s @@ -0,0 +1,19 @@ +.global _mtx_acquire +.type _mtx_acquire @function +_mtx_acquire: + lock btsw $0, (%rdi) + jc .spin + ret +.spin: + pause + testb $1, (%rdi) + jnz .spin + jmp _mtx_acquire +.size _mtx_acquire, . - _mtx_acquire + +.global _mtx_release +.type _mtx_release @function +_mtx_release: + movb $0, (%rdi) + ret +.size _mtx_release, . - _mtx_release |