| Server IP : 217.160.0.212 / Your IP : 216.73.216.141 Web Server : Apache System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/go-1.23/src/internal/runtime/atomic/ |
Upload File : |
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build arm || wasm
// Export some functions via linkname to assembly in sync/atomic.
//
//go:linkname And32
//go:linkname Or32
//go:linkname And64
//go:linkname Or64
//go:linkname Anduintptr
//go:linkname Oruintptr
package atomic
import _ "unsafe" // For linkname
//go:nosplit
func And32(ptr *uint32, val uint32) uint32 {
for {
old := *ptr
if Cas(ptr, old, old&val) {
return old
}
}
}
//go:nosplit
func Or32(ptr *uint32, val uint32) uint32 {
for {
old := *ptr
if Cas(ptr, old, old|val) {
return old
}
}
}
//go:nosplit
func And64(ptr *uint64, val uint64) uint64 {
for {
old := *ptr
if Cas64(ptr, old, old&val) {
return old
}
}
}
//go:nosplit
func Or64(ptr *uint64, val uint64) uint64 {
for {
old := *ptr
if Cas64(ptr, old, old|val) {
return old
}
}
}
//go:nosplit
func Anduintptr(ptr *uintptr, val uintptr) uintptr {
for {
old := *ptr
if Casuintptr(ptr, old, old&val) {
return old
}
}
}
//go:nosplit
func Oruintptr(ptr *uintptr, val uintptr) uintptr {
for {
old := *ptr
if Casuintptr(ptr, old, old|val) {
return old
}
}
}