c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * CDDL HEADER START
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * The contents of this file are subject to the terms of the
aa81749390e332985277568edab1ee6132326b42gs * Common Development and Distribution License (the "License").
aa81749390e332985277568edab1ee6132326b42gs * You may not use this file except in compliance with the License.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * See the License for the specific language governing permissions
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * and limitations under the License.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * When distributing Covered Code, include this CDDL HEADER in each
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * If applicable, add the following below this CDDL HEADER, with the
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * fields enclosed by brackets "[]" replaced with your own identifying
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * information: Portions Copyright [yyyy] [name of copyright owner]
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * CDDL HEADER END
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs#if defined(_KERNEL)
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * Legacy kernel interfaces; they will go away the moment our closed
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * bins no longer require them.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs ANSI_PRAGMA_WEAK2(atomic_and_long,atomic_and_ulong,function)
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs ANSI_PRAGMA_WEAK2(atomic_or_long,atomic_or_ulong,function)
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xorl %eax, %eax / clear upper bits of %eax return register
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xorl %eax, %eax / clear upper bits of %eax return register
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xaddl %eax, (%rdi) / %eax = old value, (%rdi) = new value
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xaddq %rax, (%rdi) / %rax = old value, (%rdi) = new value
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xorl %eax, %eax / clear upper bits of %eax return register
aa81749390e332985277568edab1ee6132326b42gs xorl %eax, %eax / clear upper bits of %eax return register
834a2629f6f251c7492f75e808a856b82a27b337yong tan - Sun Microsystems - Beijing China ALTENTRY(atomic_dec_uint_nv)
834a2629f6f251c7492f75e808a856b82a27b337yong tan - Sun Microsystems - Beijing China xorl %eax, %eax / %eax = 0
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xaddl %eax, (%rdi) / %eax = old value, (%rdi) = new value
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs xaddq %rax, (%rdi) / %rax = old value, (%rdi) = new value
3a84c50f71e0942a55e90913f6b44878d5062621Winson Wang - Sun Microsystems - Beijing China SET_SIZE(atomic_add_32)
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs#if !defined(_KERNEL)
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * NOTE: membar_enter, and membar_exit are identical routines.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * We define them separately, instead of using an ALTENTRY
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * definitions to alias them together, so that DTrace and
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * debuggers will see a unique address for them, allowing
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs * more accurate tracing.
c7fd2ed091e4e4beb47e1da3a6197a2c38f29c02gs#endif /* !_KERNEL */