1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
.text
.align 4
.globl opal_atomic_mb
.type opal_atomic_mb, #function
opal_atomic_mb:
!#PROLOGUE# 0
!#PROLOGUE# 1
retl
nop
.size opal_atomic_mb, .-opal_atomic_mb
.globl opal_atomic_rmb
.type opal_atomic_rmb, #function
opal_atomic_rmb:
!#PROLOGUE# 0
!#PROLOGUE# 1
retl
nop
.size opal_atomic_rmb, .-opal_atomic_rmb
.globl opal_atomic_wmb
.type opal_atomic_wmb, #function
opal_atomic_wmb:
!#PROLOGUE# 0
!#PROLOGUE# 1
retl
nop
.size opal_atomic_wmb, .-opal_atomic_wmb
.globl opal_atomic_init
.type opal_atomic_init, #function
opal_atomic_init:
!#PROLOGUE# 0
!#PROLOGUE# 1
stb %o1, [%o0]
retl
nop
.size opal_atomic_init, .-opal_atomic_init
.globl opal_atomic_trylock
.type opal_atomic_trylock, #function
opal_atomic_trylock:
!#PROLOGUE# 0
!#PROLOGUE# 1
ldstub [%o0], %o0
and %o0, 0xff, %o0
subcc %g0, %o0, %g0
retl
subx %g0, -1, %o0
.size opal_atomic_trylock, .-opal_atomic_trylock
.globl opal_atomic_lock
.type opal_atomic_lock, #function
opal_atomic_lock:
!#PROLOGUE# 0
save %sp, -112, %sp
!#PROLOGUE# 1
.Lretry:
ldstub [%i0], %l0
tst %l0
be .Lout
nop
.Lloop:
ldub [%i0], %l0
tst %l0
bne .Lloop
nop
ba,a .Lretry
.Lout:
nop
ret
restore
.size opal_atomic_lock, .-opal_atomic_lock
.globl opal_atomic_unlock
.type opal_atomic_unlock, #function
opal_atomic_unlock:
!#PROLOGUE# 0
!#PROLOGUE# 1
stbar
stb %g0, [%o0]
retl
nop
.size opal_atomic_unlock, .-opal_atomic_unlock
|