runtime: correct mips64 asmcgocall signal stack behaviour

Do not switch to the g0 stack if we're already running on the signal
stack, otherwise all kind of fun ensues.

Updates #36435

Change-Id: I57f35d75b9ee4f92b997713b4cdd38ce881705e6
Reviewed-on: https://go-review.googlesource.com/c/go/+/334880
Trust: Joel Sing <joel@sing.id.au>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
Joel Sing 2021-05-29 04:06:56 +10:00
parent 6a760d6c36
commit 160d797260

View file

@ -426,6 +426,8 @@ TEXT ·asmcgocall(SB),NOSPLIT,$0-20
// We get called to create new OS threads too, and those
// come in on the m->g0 stack already.
MOVV g_m(g), R5
MOVV m_gsignal(R5), R6
BEQ R6, g, g0
MOVV m_g0(R5), R6
BEQ R6, g, g0