github.com/bir3/gocompiler@v0.9.2202/src/cmd/cgo/internal/test/issue9400/asm_arm64.s (about) 1 // Copyright 2014 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build gc 6 7 #include "textflag.h" 8 9 TEXT ·RewindAndSetgid(SB),NOSPLIT|NOFRAME,$0-0 10 // Save link register 11 MOVD R30, R9 12 13 // Rewind stack pointer so anything that happens on the stack 14 // will clobber the test pattern created by the caller 15 ADD $(1024 * 8), RSP 16 17 // Ask signaller to setgid 18 MOVD $·Baton(SB), R0 19 MOVD $1, R1 20 storeloop: 21 LDAXRW (R0), R2 22 STLXRW R1, (R0), R3 23 CBNZ R3, storeloop 24 25 // Wait for setgid completion 26 MOVW $0, R1 27 MOVW $0, R2 28 loop: 29 LDAXRW (R0), R3 30 CMPW R1, R3 31 BNE loop 32 STLXRW R2, (R0), R3 33 CBNZ R3, loop 34 35 // Restore stack 36 SUB $(1024 * 8), RSP 37 38 MOVD R9, R30 39 RET