summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/lock.s
blob: b63f078c766b1212b55756adb75bf90dc659d0f9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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