| // +build ppc64 ppc64le | |
| #include "textflag.h" | |
| TEXT ·RewindAndSetgid(SB),NOSPLIT,$-8-0 | |
| // Rewind stack pointer so anything that happens on the stack | |
| // will clobber the test pattern created by the caller | |
| ADD $(1024 * 8), R1 | |
| // Ask signaller to setgid | |
| MOVW $1, R3 | |
| SYNC | |
| MOVW R3, ·Baton(SB) | |
| // Wait for setgid completion | |
| loop: | |
| SYNC | |
| MOVW ·Baton(SB), R3 | |
| CMP R3, $0 | |
| // Hint that we're in a spin loop | |
| OR R1, R1, R1 | |
| BNE loop | |
| ISYNC | |
| // Restore stack | |
| SUB $(1024 * 8), R1 | |
| RET |