< prev index next >
src/hotspot/os_cpu/bsd_x86/bsd_x86_32.s
Print this page
*** 633,644 ****
ret
# Support for int64_t Atomic::cmpxchg(int64_t exchange_value,
# volatile int64_t* dest,
! # int64_t compare_value,
! # bool is_MP)
#
.p2align 4,,15
ELF_TYPE(_Atomic_cmpxchg_long,@function)
SYMBOL(_Atomic_cmpxchg_long):
# 8(%esp) : return PC
--- 633,643 ----
ret
# Support for int64_t Atomic::cmpxchg(int64_t exchange_value,
# volatile int64_t* dest,
! # int64_t compare_value)
#
.p2align 4,,15
ELF_TYPE(_Atomic_cmpxchg_long,@function)
SYMBOL(_Atomic_cmpxchg_long):
# 8(%esp) : return PC
*** 647,660 ****
movl 12(%esp), %ebx # 12(%esp) : exchange_value (low)
movl 16(%esp), %ecx # 16(%esp) : exchange_value (high)
movl 24(%esp), %eax # 24(%esp) : compare_value (low)
movl 28(%esp), %edx # 28(%esp) : compare_value (high)
movl 20(%esp), %edi # 20(%esp) : dest
- cmpl $0, 32(%esp) # 32(%esp) : is_MP
- je 1f
lock
! 1: cmpxchg8b (%edi)
popl %edi
popl %ebx
ret
--- 646,657 ----
movl 12(%esp), %ebx # 12(%esp) : exchange_value (low)
movl 16(%esp), %ecx # 16(%esp) : exchange_value (high)
movl 24(%esp), %eax # 24(%esp) : compare_value (low)
movl 28(%esp), %edx # 28(%esp) : compare_value (high)
movl 20(%esp), %edi # 20(%esp) : dest
lock
! cmpxchg8b (%edi)
popl %edi
popl %ebx
ret
< prev index next >