35 lines
838 B
ArmAsm
35 lines
838 B
ArmAsm
|
#################################################################
|
||
|
# #
|
||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||
|
# #
|
||
|
# This source code contains the intellectual property #
|
||
|
# of its copyright holder(s), and is made available #
|
||
|
# under a license. If you do not know the terms of #
|
||
|
# the license, please stop and do not read further. #
|
||
|
# #
|
||
|
#################################################################
|
||
|
|
||
|
# PAGE ,132
|
||
|
.title compswap.s
|
||
|
.sbttl compswap
|
||
|
.include "linkage.si"
|
||
|
|
||
|
# .386
|
||
|
# .MODEL FLAT, C
|
||
|
|
||
|
.text
|
||
|
ENTRY compswap
|
||
|
movl 4(%esp),%edx # A(latch longword)
|
||
|
movl 8(%esp),%eax # comparison value
|
||
|
movl 12(%esp),%ecx # replacement value
|
||
|
# LOCK cmpxchgl %ecx,(%edx)
|
||
|
lock
|
||
|
cmpxchgl %ecx,(%edx) # compare-n-swap
|
||
|
jnz fail
|
||
|
movl $1,%eax # return TRUE
|
||
|
ret
|
||
|
|
||
|
fail:
|
||
|
xor %eax,%eax # return FALSE
|
||
|
ret
|