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
|
START_FILE
TEXT
ALIGN(4)
START_FUNC(opal_atomic_mb)
!#PROLOGUE# 0
!#PROLOGUE# 1
retl
nop
END_FUNC(opal_atomic_mb)
START_FUNC(opal_atomic_rmb)
!#PROLOGUE# 0
!#PROLOGUE# 1
retl
nop
END_FUNC(opal_atomic_rmb)
START_FUNC(opal_atomic_wmb)
!#PROLOGUE# 0
!#PROLOGUE# 1
retl
nop
END_FUNC(opal_atomic_wmb)
START_FUNC(opal_atomic_init)
!#PROLOGUE# 0
!#PROLOGUE# 1
stb %o1, [%o0]
retl
nop
END_FUNC(opal_atomic_init)
START_FUNC(opal_atomic_trylock)
!#PROLOGUE# 0
!#PROLOGUE# 1
ldstub [%o0], %o0
and %o0, 0xff, %o0
subcc %g0, %o0, %g0
retl
subx %g0, -1, %o0
END_FUNC(opal_atomic_trylock)
START_FUNC(opal_atomic_lock)
!#PROLOGUE# 0
save %sp, -112, %sp
!#PROLOGUE# 1
LSYM(retry)
ldstub [%i0], %l0
tst %l0
be REFLSYM(out)
nop
LSYM(loop)
ldub [%i0], %l0
tst %l0
bne REFLSYM(loop)
nop
ba,a REFLSYM(retry)
LSYM(out)
nop
ret
restore
END_FUNC(opal_atomic_lock)
START_FUNC(opal_atomic_unlock)
!#PROLOGUE# 0
!#PROLOGUE# 1
stbar
stb %g0, [%o0]
retl
nop
END_FUNC(opal_atomic_unlock)
|