// 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(( & ) >> )
		}
	}
}