fix uintptr conversion

This commit is contained in:
Mauri de Souza Meneguzzo 2024-10-28 20:09:55 -03:00
parent e6105c35be
commit dd9a39a555
No known key found for this signature in database
GPG Key ID: 20F8BD208210BEF4
1 changed files with 2 additions and 3 deletions

View File

@ -80,9 +80,8 @@ func Xchg8(addr *uint8, v uint8) uint8
//go:nosplit
func goXchg8(addr *uint8, v uint8) uint8 {
// Align down to 4 bytes and use 32-bit CAS.
uaddr := uintptr(unsafe.Pointer(addr))
addr32 := (*uint32)(unsafe.Pointer(uaddr &^ 3))
shift := (uaddr & 3) * 8 // little endian
addr32 := (*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(addr)) &^ 3))
shift := (uintptr(unsafe.Pointer(addr)) & 3) * 8 // little endian
word := uint32(v) << shift
mask := uint32(0xFF) << shift