internal/runtime/atomic: add Xchg8 for 386

This commit is contained in:
Mauri de Souza Meneguzzo 2024-10-17 09:48:39 -03:00
parent ef3e1dae2f
commit 690337e5b8
No known key found for this signature in database
GPG Key ID: 20F8BD208210BEF4
3 changed files with 12 additions and 1 deletions

View File

@ -53,6 +53,9 @@ func Xchg64(ptr *uint64, new uint64) uint64
//go:noescape
func Xchg(ptr *uint32, new uint32) uint32
//go:noescape
func Xchg8(ptr *uint8, new uint8) uint8
//go:noescape
func Xchguintptr(ptr *uintptr, new uintptr) uintptr

View File

@ -153,6 +153,14 @@ addloop:
MOVL CX, ret_hi+16(FP)
RET
// uint8 Xchg8(uint8 *ptr, uint8 new)
TEXT ·Xchg8(SB), NOSPLIT, $0-9
MOVL ptr+0(FP), BX
MOVB new+4(FP), AX
XCHGB AX, 0(BX)
MOVB AX, ret+8(FP)
RET
TEXT ·Xchg(SB), NOSPLIT, $0-12
MOVL ptr+0(FP), BX
MOVL new+4(FP), AX

View File

@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build amd64 || arm64 || ppc64 || ppc64le
//go:build 386 || amd64 || arm64 || ppc64 || ppc64le
package atomic_test