]> Cypherpunks.ru repositories - gostls13.git/blob - misc/cgo/test/testdata/issue9400/asm_arm64.s
2565793f9ab00d3e068dc8e6e76b6b014c43c1fc
[gostls13.git] / misc / cgo / test / testdata / issue9400 / asm_arm64.s
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 // +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