Do previous differently as the API is different.

This commit is contained in:
skrll 2021-04-21 16:23:47 +00:00
parent a32fdb6548
commit fd9a2ad443
27 changed files with 449 additions and 325 deletions

View File

@ -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_64.S
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

View File

@ -1,4 +1,4 @@
/* $NetBSD: atomic_swap_rel_32.S,v 1.1 2021/04/21 07:31:37 skrll Exp $ */
/* $NetBSD: __aarch64_swp1_acq.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@ -31,14 +31,11 @@
#include "atomic_op_asm.h"
ENTRY_NP(_atomic_swap_rel_32)
ENTRY_NP(__aarch64_swp1_acq)
mov x4, x0
1: ldxr w0, [x4]
stlxr w3, w1, [x4]
1: ldaxrb w0, [x1]
stxrb w3, w4, [x1]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_rel_32)
ATOMIC_OP_ALIAS(atomic_swap_rel_32,_atomic_swap_rel_32)
ATOMIC_OP_ALIAS(__aarch64_swp4_rel,_atomic_swap_rel_32)
END(__aarch64_swp1_acq)

View File

@ -1,4 +1,4 @@
/* $NetBSD: atomic_swap_rel_8.S,v 1.1 2021/04/21 07:31:37 skrll Exp $ */
/* $NetBSD: __aarch64_swp1_acq_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@ -31,14 +31,11 @@
#include "atomic_op_asm.h"
ENTRY_NP(_atomic_swap_rel_8)
ENTRY_NP(__aarch64_swp1_acq_rel)
mov x4, x0
1: ldxrb w0, [x4]
stlxrb w3, w1, [x4]
1: ldaxrb w0, [x1]
stlxrb w3, w4, [x1]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_rel_8)
ATOMIC_OP_ALIAS(atomic_swap_rel_8,_atomic_swap_rel_8)
ATOMIC_OP_ALIAS(__aarch64_swp1_rel,_atomic_swap_rel_8)
END(__aarch64_swp1_acq_rel)

View File

@ -1,4 +1,4 @@
/* $NetBSD: atomic_swap_acq_32.S,v 1.1 2021/04/21 07:31:37 skrll Exp $ */
/* $NetBSD: __aarch64_swp1_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@ -31,14 +31,11 @@
#include "atomic_op_asm.h"
ENTRY_NP(_atomic_swap_acq_32)
ENTRY_NP(__aarch64_swp1_rel)
mov x4, x0
1: ldaxr w0, [x4]
stxr w3, w1, [x4]
1: ldxrb w0, [x1]
stlxrb w3, w4, [x1]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_32)
ATOMIC_OP_ALIAS(atomic_swap_acq_32,_atomic_swap_acq_32)
ATOMIC_OP_ALIAS(__aarch64_swp4_acq,_atomic_swap_acq_32)
END(__aarch64_swp1_rel)

View File

@ -1,4 +1,4 @@
/* $NetBSD: atomic_swap_acq_8.S,v 1.1 2021/04/21 07:31:37 skrll Exp $ */
/* $NetBSD: __aarch64_swp1_relax.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@ -31,14 +31,11 @@
#include "atomic_op_asm.h"
ENTRY_NP(_atomic_swap_acq_8)
ENTRY_NP(__aarch64_swp1_relax)
mov x4, x0
1: ldaxrb w0, [x4]
stxrb w3, w1, [x4]
1: ldxrb w0, [x1]
stxrb w3, w4, [x1]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_8)
ATOMIC_OP_ALIAS(atomic_swap_acq_8,_atomic_swap_acq_8)
ATOMIC_OP_ALIAS(__aarch64_swp1_acq,_atomic_swap_acq_8)
END(__aarch64_swp1_relax)

View File

@ -1,4 +1,4 @@
/* $NetBSD: atomic_swap_acq_64.S,v 1.1 2021/04/21 07:31:37 skrll Exp $ */
/* $NetBSD: __aarch64_swp2_acq.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@ -31,14 +31,11 @@
#include "atomic_op_asm.h"
ENTRY_NP(_atomic_swap_acq_64)
ENTRY_NP(__aarch64_swp2_acq)
mov x4, x0
1: ldaxr x0, [x4]
stxr w3, x1, [x4]
1: ldaxrh w0, [x1]
stxrh w3, w4, [x1]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_64)
ATOMIC_OP_ALIAS(atomic_swap_acq_64,_atomic_swap_acq_64)
ATOMIC_OP_ALIAS(__aarch64_swp8_acq,_atomic_swap_acq_64)
END(__aarch64_swp2_acq)

View File

@ -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)

View File

@ -1,4 +1,4 @@
/* $NetBSD: atomic_swap_rel_64.S,v 1.1 2021/04/21 07:31:37 skrll Exp $ */
/* $NetBSD: __aarch64_swp2_rel.S,v 1.1 2021/04/21 16:23:47 skrll Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@ -31,14 +31,11 @@
#include "atomic_op_asm.h"
ENTRY_NP(_atomic_swap_rel_64)
ENTRY_NP(__aarch64_swp2_rel)
mov x4, x0
1: ldxr x0, [x4]
stlxr w3, x1, [x4]
1: ldxrh w0, [x1]
stlxrh w3, w4, [x1]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_rel_64)
ATOMIC_OP_ALIAS(atomic_swap_rel_64,_atomic_swap_rel_64)
ATOMIC_OP_ALIAS(__aarch64_swp8_rel,_atomic_swap_rel_64)
END(__aarch64_swp2_rel)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -1,44 +0,0 @@
/* $NetBSD: atomic_swap_acq_16.S,v 1.1 2021/04/21 07:31:37 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(_atomic_swap_acq_16)
mov x4, x0
1: ldaxrh w0, [x4]
stxrh w3, w1, [x4]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_16)
ATOMIC_OP_ALIAS(atomic_swap_acq_16,_atomic_swap_acq_16)
ATOMIC_OP_ALIAS(__aarch64_swp2_acq,_atomic_swap_acq_16)

View File

@ -1,44 +0,0 @@
/* $NetBSD: atomic_swap_acq_rel_16.S,v 1.1 2021/04/21 07:31:37 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(_atomic_swap_acq_rel_16)
mov x4, x0
1: ldaxrh w0, [x4]
stlxrh w3, w1, [x4]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_rel_16)
ATOMIC_OP_ALIAS(atomic_swap_acq_rel_16,_atomic_swap_acq_rel_16)
ATOMIC_OP_ALIAS(__aarch64_swp2_acq_rel,_atomic_swap_acq_rel_16)

View File

@ -1,44 +0,0 @@
/* $NetBSD: atomic_swap_acq_rel_32.S,v 1.1 2021/04/21 07:31:37 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(_atomic_swap_acq_rel_32)
mov x4, x0
1: ldaxr w0, [x4]
stlxr w3, w1, [x4]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_rel_32)
ATOMIC_OP_ALIAS(atomic_swap_acq_rel_32,_atomic_swap_acq_rel_32)
ATOMIC_OP_ALIAS(__aarch64_swp4_acq_rel,_atomic_swap_acq_rel_32)

View File

@ -1,44 +0,0 @@
/* $NetBSD: atomic_swap_acq_rel_64.S,v 1.1 2021/04/21 07:31:37 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(_atomic_swap_acq_rel_64)
mov x4, x0
1: ldaxr x0, [x4]
stlxr w3, x1, [x4]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_rel_64)
ATOMIC_OP_ALIAS(atomic_swap_acq_rel_64,_atomic_swap_acq_rel_64)
ATOMIC_OP_ALIAS(__aarch64_swp8_acq_rel,_atomic_swap_acq_rel_64)

View File

@ -1,44 +0,0 @@
/* $NetBSD: atomic_swap_acq_rel_8.S,v 1.1 2021/04/21 07:31:37 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(_atomic_swap_acq_rel_8)
mov x4, x0
1: ldaxrb w0, [x4]
stlxrb w3, w1, [x4]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_acq_rel_8)
ATOMIC_OP_ALIAS(atomic_swap_rel_8,_atomic_swap_rel_8)
ATOMIC_OP_ALIAS(__aarch64_swp1_rel,_atomic_swap_rel_8)

View File

@ -1,44 +0,0 @@
/* $NetBSD: atomic_swap_rel_16.S,v 1.1 2021/04/21 07:31:37 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(_atomic_swap_rel_16)
mov x4, x0
1: ldxrh w0, [x4]
stlxrh w3, w1, [x4]
cbnz w3, 2f
ret
2: b 1b
END(_atomic_swap_rel_16)
ATOMIC_OP_ALIAS(atomic_swap_rel_16,_atomic_swap_rel_16)
ATOMIC_OP_ALIAS(__aarch64_swp2_rel,_atomic_swap_rel_16)