1 1.10 simonb /* $NetBSD: atomic_op_asm.h,v 1.10 2021/07/28 08:01:10 simonb Exp $ */ 2 1.2 matt 3 1.2 matt /*- 4 1.2 matt * Copyright (c) 2007 The NetBSD Foundation, Inc. 5 1.2 matt * All rights reserved. 6 1.2 matt * 7 1.2 matt * This code is derived from software contributed to The NetBSD Foundation 8 1.2 matt * by Jason R. Thorpe. 9 1.2 matt * 10 1.2 matt * Redistribution and use in source and binary forms, with or without 11 1.2 matt * modification, are permitted provided that the following conditions 12 1.2 matt * are met: 13 1.2 matt * 1. Redistributions of source code must retain the above copyright 14 1.2 matt * notice, this list of conditions and the following disclaimer. 15 1.2 matt * 2. Redistributions in binary form must reproduce the above copyright 16 1.2 matt * notice, this list of conditions and the following disclaimer in the 17 1.2 matt * documentation and/or other materials provided with the distribution. 18 1.2 matt * 3. All advertising materials mentioning features or use of this software 19 1.2 matt * must display the following acknowledgement: 20 1.2 matt * This product includes software developed by the NetBSD 21 1.2 matt * Foundation, Inc. and its contributors. 22 1.2 matt * 4. Neither the name of The NetBSD Foundation nor the names of its 23 1.2 matt * contributors may be used to endorse or promote products derived 24 1.2 matt * from this software without specific prior written permission. 25 1.8 skrll * 26 1.2 matt * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27 1.2 matt * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 1.2 matt * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29 1.2 matt * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30 1.2 matt * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 1.2 matt * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 1.2 matt * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 1.2 matt * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 1.2 matt * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 1.2 matt * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 1.2 matt * POSSIBILITY OF SUCH DAMAGE. 37 1.2 matt */ 38 1.2 matt 39 1.2 matt #ifndef _ATOMIC_OP_ASM_H_ 40 1.2 matt #define _ATOMIC_OP_ASM_H_ 41 1.2 matt 42 1.2 matt #include <machine/asm.h> 43 1.2 matt 44 1.6 matt #if defined(_KERNEL) || defined(_STANDALONE) 45 1.2 matt 46 1.2 matt #define ATOMIC_OP_ALIAS(a,s) STRONG_ALIAS(a,s) 47 1.2 matt 48 1.2 matt #else /* _KERNEL */ 49 1.2 matt 50 1.2 matt #define ATOMIC_OP_ALIAS(a,s) WEAK_ALIAS(a,s) 51 1.5 martin #ifdef _LIBC 52 1.6 matt #define CRT_ALIAS(a,s) STRONG_ALIAS(a,s) 53 1.5 martin #endif 54 1.2 matt 55 1.2 matt #endif /* _KERNEL */ 56 1.2 matt 57 1.3 matt #ifdef __ARMEB__ 58 1.3 matt #define HI r0 59 1.3 matt #define LO r1 60 1.3 matt #define NHI r2 61 1.3 matt #define NLO r3 62 1.4 matt #define THI r4 63 1.4 matt #define TLO r5 64 1.3 matt #else 65 1.3 matt #define LO r0 66 1.3 matt #define HI r1 67 1.3 matt #define NLO r2 68 1.3 matt #define NHI r3 69 1.4 matt #define TLO r4 70 1.4 matt #define THI r5 71 1.3 matt #endif 72 1.3 matt 73 1.5 martin #ifndef CRT_ALIAS 74 1.5 martin #define CRT_ALIAS(a,s) 75 1.5 martin #endif 76 1.5 martin 77 1.9 skrll #ifdef _ARM_ARCH_7 78 1.10 simonb #define DMB dmb ish 79 1.9 skrll #define DMBST dmb ishst 80 1.9 skrll #else 81 1.10 simonb #define DMB mcr p15, 0, r0, c7, c10, 5 /* Data Memory Barrier */ 82 1.10 simonb #define DMBST DMB 83 1.9 skrll #endif 84 1.9 skrll 85 1.2 matt #endif /* _ATOMIC_OP_ASM_H_ */ 86