]> Cypherpunks.ru repositories - gostls13.git/blob - misc/cgo/test/issue9400/asm_mips64x.s
693231ddfe1b94a8cd896cd3a29aaff2b3d52a94
[gostls13.git] / misc / cgo / test / issue9400 / asm_mips64x.s
1 // Copyright 2016 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 mips64 mips64le
6 // +build gc
7
8 #include "textflag.h"
9
10 #define SYNC    WORD $0xf
11
12 TEXT ·RewindAndSetgid(SB),NOSPLIT|NOFRAME,$0-0
13         // Rewind stack pointer so anything that happens on the stack
14         // will clobber the test pattern created by the caller
15         ADDV    $(1024*8), R29
16
17         // Ask signaller to setgid
18         MOVW    $1, R1
19         SYNC
20         MOVW    R1, ·Baton(SB)
21         SYNC
22
23         // Wait for setgid completion
24 loop:
25         SYNC
26         MOVW    ·Baton(SB), R1
27         OR      R2, R2, R2      // hint that we're in a spin loop
28         BNE     R1, loop
29         SYNC
30
31         // Restore stack
32         ADDV    $(-1024*8), R29
33         RET