111
|
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 !gccgo
|
|
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
|