Module Name: src Committed By: skrll Date: Wed Apr 21 16:23:47 UTC 2021
Modified Files: src/common/lib/libc/arch/aarch64/atomic: Makefile.inc atomic_swap_16.S atomic_swap_32.S atomic_swap_64.S atomic_swap_8.S Added Files: src/common/lib/libc/arch/aarch64/atomic: __aarch64_swp1_acq.S __aarch64_swp1_acq_rel.S __aarch64_swp1_rel.S __aarch64_swp1_relax.S __aarch64_swp2_acq.S __aarch64_swp2_acq_rel.S __aarch64_swp2_rel.S __aarch64_swp2_relax.S __aarch64_swp4_acq.S __aarch64_swp4_acq_rel.S __aarch64_swp4_rel.S __aarch64_swp4_relax.S __aarch64_swp8_acq.S __aarch64_swp8_acq_rel.S __aarch64_swp8_rel.S __aarch64_swp8_relax.S Removed Files: src/common/lib/libc/arch/aarch64/atomic: atomic_swap_acq_16.S atomic_swap_acq_32.S atomic_swap_acq_64.S atomic_swap_acq_8.S atomic_swap_acq_rel_16.S atomic_swap_acq_rel_32.S atomic_swap_acq_rel_64.S atomic_swap_acq_rel_8.S atomic_swap_rel_16.S atomic_swap_rel_32.S atomic_swap_rel_64.S atomic_swap_rel_8.S Log Message: Do previous differently as the API is different. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc cvs rdiff -u -r0 -r1.1 \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_relax.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_relax.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_relax.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_rel.S \ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_relax.S cvs rdiff -u -r1.3 -r1.4 \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S cvs rdiff -u -r1.1 -r0 \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_acq_rel_8.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_16.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_32.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_64.S \ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_rel_8.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/common/lib/libc/arch/aarch64/atomic/Makefile.inc diff -u src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2 src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.3 --- src/common/lib/libc/arch/aarch64/atomic/Makefile.inc:1.2 Wed Apr 21 07:31:37 2021 +++ src/common/lib/libc/arch/aarch64/atomic/Makefile.inc Wed Apr 21 16:23:47 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.2 2021/04/21 07:31:37 skrll Exp $ +# $NetBSD: Makefile.inc,v 1.3 2021/04/21 16:23:47 skrll Exp $ .if defined(LIB) && (${LIB} == "kern" || ${LIB} == "c" || ${LIB} == "pthread" \ || ${LIB} == "rump") @@ -12,10 +12,10 @@ SRCS.atomic+= atomic_dec_32.S atomic_dec SRCS.atomic+= atomic_inc_32.S atomic_inc_64.S SRCS.atomic+= membar_ops.S #and cas nand or sub swap xor -.for op in swap -.for sz in 8 16 32 64 -.for ar in acq rel acq_rel -SRCS.atomic+= atomic_${op}_${ar}_${sz}.S +.for op in swp +.for sz in 1 2 4 8 +.for ar in relax acq rel acq_rel +SRCS.atomic+= __aarch64_${op}${sz}_${ar}.S .endfor .endfor .endfor Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S:1.3 Wed Apr 21 07:31:37 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_16.S Wed Apr 21 16:23:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_16.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */ +/* $NetBSD: atomic_swap_16.S,v 1.4 2021/04/21 16:23:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -43,7 +43,6 @@ END(_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_16,_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_short,_atomic_swap_16) ATOMIC_OP_ALIAS(atomic_swap_ushort,_atomic_swap_16) -ATOMIC_OP_ALIAS(__aarch64_swp2_relax,_atomic_swap_16) STRONG_ALIAS(__sync_lock_test_and_set_2,_atomic_swap_16) STRONG_ALIAS(_atomic_swap_short,_atomic_swap_16) STRONG_ALIAS(_atomic_swap_ushort,_atomic_swap_16) Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S:1.3 Wed Apr 21 07:31:37 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_32.S Wed Apr 21 16:23:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_32.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */ +/* $NetBSD: atomic_swap_32.S,v 1.4 2021/04/21 16:23:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -42,7 +42,6 @@ END(_atomic_swap_32) ATOMIC_OP_ALIAS(atomic_swap_32,_atomic_swap_32) ATOMIC_OP_ALIAS(atomic_swap_uint,_atomic_swap_32) -ATOMIC_OP_ALIAS(__aarch64_swp4_relax,_atomic_swap_32) STRONG_ALIAS(__sync_lock_test_and_set_4,_atomic_swap_32) STRONG_ALIAS(_atomic_swap_uint,_atomic_swap_32) Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S:1.3 Wed Apr 21 07:31:37 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_64.S Wed Apr 21 16:23:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_64.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */ +/* $NetBSD: atomic_swap_64.S,v 1.4 2021/04/21 16:23:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -43,7 +43,6 @@ END(_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_ulong,_atomic_swap_64) ATOMIC_OP_ALIAS(atomic_swap_ptr,_atomic_swap_64) -ATOMIC_OP_ALIAS(__aarch64_swp8_relax,_atomic_swap_64) STRONG_ALIAS(__sync_lock_test_and_set_8,_atomic_swap_64) STRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_64) STRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_64) Index: src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S diff -u src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S:1.3 src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S:1.4 --- src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S:1.3 Wed Apr 21 07:31:37 2021 +++ src/common/lib/libc/arch/aarch64/atomic/atomic_swap_8.S Wed Apr 21 16:23:47 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: atomic_swap_8.S,v 1.3 2021/04/21 07:31:37 skrll Exp $ */ +/* $NetBSD: atomic_swap_8.S,v 1.4 2021/04/21 16:23:47 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -43,7 +43,6 @@ END(_atomic_swap_8) ATOMIC_OP_ALIAS(atomic_swap_8,_atomic_swap_8) ATOMIC_OP_ALIAS(atomic_swap_char,_atomic_swap_8) ATOMIC_OP_ALIAS(atomic_swap_uchar,_atomic_swap_8) -ATOMIC_OP_ALIAS(__aarch64_swp1_relax,_atomic_swap_8) STRONG_ALIAS(__sync_lock_test_and_set_1,_atomic_swap_8) STRONG_ALIAS(_atomic_swap_char,_atomic_swap_8) STRONG_ALIAS(_atomic_swap_uchar,_atomic_swap_8) Added files: Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp1_acq.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp1_acq) + mov x4, x0 +1: ldaxrb w0, [x1] + stxrb w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp1_acq) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_acq_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp1_acq_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp1_acq_rel) + mov x4, x0 +1: ldaxrb w0, [x1] + stlxrb w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp1_acq_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp1_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp1_rel) + mov x4, x0 +1: ldxrb w0, [x1] + stlxrb w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp1_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_relax.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_relax.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp1_relax.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp1_relax.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp1_relax) + mov x4, x0 +1: ldxrb w0, [x1] + stxrb w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp1_relax) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp2_acq.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp2_acq) + mov x4, x0 +1: ldaxrh w0, [x1] + stxrh w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp2_acq) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_acq_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp2_acq_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp2_acq_rel) + mov x4, x0 +1: ldaxrh w0, [x1] + stlxrh w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp2_acq_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp2_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp2_rel) + mov x4, x0 +1: ldxrh w0, [x1] + stlxrh w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp2_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_relax.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_relax.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp2_relax.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp2_relax.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp2_relax) + mov x4, x0 +1: ldxrh w0, [x1] + stxrh w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp2_relax) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp4_acq.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp4_acq) + mov x4, x0 +1: ldaxr w0, [x1] + stxr w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp4_acq) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_acq_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp4_acq_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp4_acq_rel) + mov x4, x0 +1: ldaxr w0, [x1] + stlxr w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp4_acq_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp4_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp4_rel) + mov x4, x0 +1: ldxr w0, [x1] + stlxr w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp4_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_relax.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_relax.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp4_relax.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp4_relax.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp4_relax) + mov x4, x0 +1: ldxr w0, [x1] + stxr w3, w4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp4_relax) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp8_acq.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp8_acq) + mov x4, x0 +1: ldaxr x0, [x1] + stxr w3, x4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp8_acq) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_acq_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp8_acq_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp8_acq_rel) + mov x4, x0 +1: ldaxr x0, [x1] + stlxr w3, x4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp8_acq_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_rel.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_rel.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_rel.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp8_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp8_rel) + mov x4, x0 +1: ldxr x0, [x1] + stlxr w3, x4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp8_rel) Index: src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_relax.S diff -u /dev/null src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_relax.S:1.1 --- /dev/null Wed Apr 21 16:23:47 2021 +++ src/common/lib/libc/arch/aarch64/atomic/__aarch64_swp8_relax.S Wed Apr 21 16:23:47 2021 @@ -0,0 +1,41 @@ +/* $NetBSD: __aarch64_swp8_relax.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Nick Hudson. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "atomic_op_asm.h" + +ENTRY_NP(__aarch64_swp8_relax) + mov x4, x0 +1: ldxr x0, [x1] + stxr w3, x4, [x1] + cbnz w3, 2f + ret +2: b 1b +END(__aarch64_swp8_relax)