9da0b4fe1d
This commit was SVN r6325.
104 строки
1.7 KiB
NASM
104 строки
1.7 KiB
NASM
START_FILE
|
|
TEXT
|
|
|
|
ALIGN(4)
|
|
|
|
|
|
START_FUNC(opal_atomic_mb)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad
|
|
retl
|
|
nop
|
|
END_FUNC(opal_atomic_mb)
|
|
|
|
|
|
START_FUNC(opal_atomic_rmb)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
membar #LoadLoad
|
|
retl
|
|
nop
|
|
END_FUNC(opal_atomic_rmb)
|
|
|
|
|
|
START_FUNC(opal_atomic_wmb)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
membar #StoreStore
|
|
retl
|
|
nop
|
|
END_FUNC(opal_atomic_wmb)
|
|
|
|
|
|
START_FUNC(opal_atomic_cmpset_32)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
casa [%o0] 0x80, %o1, %o2
|
|
xor %o2, %o1, %o2
|
|
subcc %g0, %o2, %g0
|
|
retl
|
|
subx %g0, -1, %o0
|
|
END_FUNC(opal_atomic_cmpset_32)
|
|
|
|
|
|
START_FUNC(opal_atomic_cmpset_acq_32)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
casa [%o0] 0x80, %o1, %o2
|
|
xor %o2, %o1, %o2
|
|
subcc %g0, %o2, %g0
|
|
subx %g0, -1, %o0
|
|
membar #LoadLoad
|
|
retl
|
|
sra %o0, 0, %o0
|
|
END_FUNC(opal_atomic_cmpset_acq_32)
|
|
|
|
|
|
START_FUNC(opal_atomic_cmpset_rel_32)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
membar #StoreStore
|
|
casa [%o0] 0x80, %o1, %o2
|
|
xor %o2, %o1, %o2
|
|
subcc %g0, %o2, %g0
|
|
retl
|
|
subx %g0, -1, %o0
|
|
END_FUNC(opal_atomic_cmpset_rel_32)
|
|
|
|
|
|
START_FUNC(opal_atomic_cmpset_64)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
casxa [%o0] 0x80, %o1, %o2
|
|
mov 0, %o0
|
|
xor %o2, %o1, %o2
|
|
retl
|
|
movre %o2, 1, %o0
|
|
END_FUNC(opal_atomic_cmpset_64)
|
|
|
|
|
|
START_FUNC(opal_atomic_cmpset_acq_64)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
casxa [%o0] 0x80, %o1, %o2
|
|
mov 0, %o0
|
|
xor %o2, %o1, %o2
|
|
movre %o2, 1, %o0
|
|
membar #LoadLoad
|
|
retl
|
|
sra %o0, 0, %o0
|
|
END_FUNC(opal_atomic_cmpset_acq_64)
|
|
|
|
|
|
START_FUNC(opal_atomic_cmpset_rel_64)
|
|
!#PROLOGUE# 0
|
|
!#PROLOGUE# 1
|
|
membar #StoreStore
|
|
casxa [%o0] 0x80, %o1, %o2
|
|
mov 0, %o0
|
|
xor %o2, %o1, %o2
|
|
retl
|
|
movre %o2, 1, %o0
|
|
END_FUNC(opal_atomic_cmpset_rel_64)
|