atomic.s revision dfb96a4f56fb431b915bc67e5d9d5c8d4f4f6679
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
.ident "%Z%%M% %I% %E% SMI"
.file "%M%"
#include <sys/asm_linkage.h>
#if defined(_KERNEL)
/*
* Legacy kernel interfaces; they will go away (eventually).
*/
#else
/*
* Include the definitions for the libc weak aliases.
*/
#include "../atomic_asm_weak.h"
#endif
/*
* NOTE: If atomic_inc_8 and atomic_inc_8_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_inc_8_nv.
*/
/*
* NOTE: If atomic_dec_8 and atomic_dec_8_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_dec_8_nv.
*/
/*
* NOTE: If atomic_add_8 and atomic_add_8_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_add_8_nv.
*/
1:
/*
* NOTE: If atomic_inc_16 and atomic_inc_16_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_inc_16_nv.
*/
/*
* NOTE: If atomic_dec_16 and atomic_dec_16_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_dec_16_nv.
*/
/*
* NOTE: If atomic_add_16 and atomic_add_16_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_add_16_nv.
*/
1:
/*
* NOTE: If atomic_inc_32 and atomic_inc_32_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_inc_32_nv.
*/
/*
* NOTE: If atomic_dec_32 and atomic_dec_32_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_dec_32_nv.
*/
/*
* NOTE: If atomic_add_32 and atomic_add_32_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_add_32_nv.
*/
1:
/*
* NOTE: If atomic_inc_64 and atomic_inc_64_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_inc_64_nv.
*/
/*
* NOTE: If atomic_dec_64 and atomic_dec_64_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_dec_64_nv.
*/
/*
* NOTE: If atomic_add_64 and atomic_add_64_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_add_64_nv.
*/
1:
/*
* NOTE: If atomic_or_8 and atomic_or_8_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_or_8_nv.
*/
1:
/*
* NOTE: If atomic_or_16 and atomic_or_16_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_or_16_nv.
*/
1:
/*
* NOTE: If atomic_or_32 and atomic_or_32_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_or_32_nv.
*/
1:
/*
* NOTE: If atomic_or_64 and atomic_or_64_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_or_64_nv.
*/
1:
/*
* NOTE: If atomic_and_8 and atomic_and_8_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_and_8_nv.
*/
1:
/*
* NOTE: If atomic_and_16 and atomic_and_16_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_and_16_nv.
*/
1:
/*
* NOTE: If atomic_and_32 and atomic_and_32_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_and_32_nv.
*/
1:
/*
* NOTE: If atomic_and_64 and atomic_and_64_nv are ever
* separated, you need to also edit the libc sparcv9 platform
* specific mapfile and remove the NODYNSORT attribute
* from atomic_and_64_nv.
*/
1:
1:
2:
1:
2:
1:
1:
1:
1:
1:
2:
1:
2:
#if !defined(_KERNEL)
/*
* Spitfires and Blackbirds have a problem with membars in the
* delay slot (SF_ERRATA_51). For safety's sake, we assume
* that the whole world needs the workaround.
*/
#endif /* !_KERNEL */