12345678910111213141516171819202122232425262728293031 |
- // Copyright 2020 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- // +build riscv64
- // +build gc
- #include "textflag.h"
- TEXT ·RewindAndSetgid(SB),NOSPLIT|NOFRAME,$0-0
- // Rewind stack pointer so anything that happens on the stack
- // will clobber the test pattern created by the caller
- ADD $(1024*8), X2
- // Ask signaller to setgid
- MOV $1, X5
- FENCE
- MOVW X5, ·Baton(SB)
- FENCE
- // Wait for setgid completion
- loop:
- FENCE
- MOVW ·Baton(SB), X5
- OR X6, X6, X6 // hint that we're in a spin loop
- BNE ZERO, X5, loop
- FENCE
- // Restore stack
- ADD $(-1024*8), X2
- RET
|