1*0a6a1f1dSLionel Sambuc/* $NetBSD: atomic_cas_up.S,v 1.4 2014/01/29 11:34:25 skrll Exp $ */ 2b6cbf720SGianluca Guida 3b6cbf720SGianluca Guida/*- 4*0a6a1f1dSLionel Sambuc * Copyright (c) 2008, 2014 The NetBSD Foundation, Inc. 5b6cbf720SGianluca Guida * All rights reserved. 6b6cbf720SGianluca Guida * 7b6cbf720SGianluca Guida * This code is derived from software contributed to The NetBSD Foundation 8b6cbf720SGianluca Guida * by Nick Hudson 9b6cbf720SGianluca Guida * 10b6cbf720SGianluca Guida * Redistribution and use in source and binary forms, with or without 11b6cbf720SGianluca Guida * modification, are permitted provided that the following conditions 12b6cbf720SGianluca Guida * are met: 13b6cbf720SGianluca Guida * 1. Redistributions of source code must retain the above copyright 14b6cbf720SGianluca Guida * notice, this list of conditions and the following disclaimer. 15b6cbf720SGianluca Guida * 2. Redistributions in binary form must reproduce the above copyright 16b6cbf720SGianluca Guida * notice, this list of conditions and the following disclaimer in the 17b6cbf720SGianluca Guida * documentation and/or other materials provided with the distribution. 18b6cbf720SGianluca Guida * 19b6cbf720SGianluca Guida * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20b6cbf720SGianluca Guida * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21b6cbf720SGianluca Guida * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22b6cbf720SGianluca Guida * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23b6cbf720SGianluca Guida * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24b6cbf720SGianluca Guida * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25b6cbf720SGianluca Guida * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26b6cbf720SGianluca Guida * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27b6cbf720SGianluca Guida * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28b6cbf720SGianluca Guida * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29b6cbf720SGianluca Guida * POSSIBILITY OF SUCH DAMAGE. 30b6cbf720SGianluca Guida */ 31b6cbf720SGianluca Guida 32b6cbf720SGianluca Guida#include <sys/ras.h> 33b6cbf720SGianluca Guida#include <machine/asm.h> 34b6cbf720SGianluca Guida 35b6cbf720SGianluca GuidaLEAF_ENTRY_NOPROFILE(_atomic_cas_up) 36b6cbf720SGianluca Guida .hidden _C_LABEL(_atomic_cas_up) 37b6cbf720SGianluca Guida 38b6cbf720SGianluca GuidaRAS_START_ASM_HIDDEN(_atomic_cas) 39b6cbf720SGianluca Guida ldw 0(%arg0), %ret0 40b6cbf720SGianluca Guida comb,<>,n %arg1, %ret0, 1f 41b6cbf720SGianluca Guida stw %arg2, 0(%arg0) 42b6cbf720SGianluca GuidaRAS_END_ASM_HIDDEN(_atomic_cas) 43b6cbf720SGianluca Guida1: 44b6cbf720SGianluca Guida bv,n %r0(%rp) 45b6cbf720SGianluca Guida 46b6cbf720SGianluca GuidaEXIT(_atomic_cas_up) 47*0a6a1f1dSLionel Sambuc 48*0a6a1f1dSLionel SambucLEAF_ENTRY_NOPROFILE(_atomic_cas_16_up) 49*0a6a1f1dSLionel Sambuc .hidden _C_LABEL(_atomic_cas_16_up) 50*0a6a1f1dSLionel Sambuc 51*0a6a1f1dSLionel SambucRAS_START_ASM_HIDDEN(_atomic_cas_16) 52*0a6a1f1dSLionel Sambuc ldh 0(%arg0),%ret0 53*0a6a1f1dSLionel Sambuc comb,<>,n %arg1, %ret0, 1f 54*0a6a1f1dSLionel Sambuc sth %arg2, 0(%arg0) 55*0a6a1f1dSLionel SambucRAS_END_ASM_HIDDEN(_atomic_cas_16) 56*0a6a1f1dSLionel Sambuc1: 57*0a6a1f1dSLionel Sambuc bv,n %r0(%rp) 58*0a6a1f1dSLionel SambucEXIT(_atomic_cas_16_up) 59*0a6a1f1dSLionel Sambuc 60*0a6a1f1dSLionel SambucLEAF_ENTRY_NOPROFILE(_atomic_cas_8_up) 61*0a6a1f1dSLionel Sambuc .hidden _C_LABEL(_atomic_cas_8_up) 62*0a6a1f1dSLionel Sambuc 63*0a6a1f1dSLionel SambucRAS_START_ASM_HIDDEN(_atomic_cas_8) 64*0a6a1f1dSLionel Sambuc ldb 0(%arg0),%ret0 65*0a6a1f1dSLionel Sambuc comb,<>,n %arg1, %ret0, 1f 66*0a6a1f1dSLionel Sambuc stb %arg2, 0(%arg0) 67*0a6a1f1dSLionel SambucRAS_END_ASM_HIDDEN(_atomic_cas_8) 68*0a6a1f1dSLionel Sambuc1: 69*0a6a1f1dSLionel Sambuc bv,n %r0(%rp) 70*0a6a1f1dSLionel SambucEXIT(_atomic_cas_8_up) 71