Source File
xchg8.go
Belonging Package
internal/runtime/atomic
// Copyright 2025 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.
package atomic
import (
)
//go:nosplit
func goXchg8( *uint8, uint8) uint8 {
// Align down to 4 bytes and use 32-bit CAS.
:= (*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer()) &^ 3))
:= (uintptr(unsafe.Pointer()) & 3)
if goarch.BigEndian {
= ^ 3
}
= * 8
:= uint32() <<
:= uint32(0xFF) <<
for {
:= * // Read the old 32-bit value
// Clear the old 8 bits then insert the new value
if Cas(, , (&^)|) {
// Return the old 8-bit value
return uint8(( & ) >> )
}
}
}
![]() |
The pages are generated with Golds v0.7.7-preview. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |