]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/obj/mips: mark unsafe points
authorCherry Zhang <cherryyz@google.com>
Sun, 27 Oct 2019 02:49:13 +0000 (22:49 -0400)
committerCherry Zhang <cherryyz@google.com>
Thu, 7 Nov 2019 19:18:49 +0000 (19:18 +0000)
commit69dcdbd2ba54e65faafbb40327e4db41dd255ad7
tree7dd1f952d7bae2957d52387a07bd2820694477a0
parent1b0b9809046c1862f8ea0240fe016e516c67676f
cmd/internal/obj/mips: mark unsafe points

For async preemption, we will be using REGTMP as a temporary
register in injected call on MIPS, which will clobber it. So any
code that uses REGTMP is not safe for async preemption.

In the assembler backend, we expand a Prog to multiple machine
instructions and use REGTMP as a temporary register if necessary.
These need to be marked unsafe. In fact, most of the
multi-instruction Progs use REGTMP, so we mark all of them,
except ones that are whitelisted.

Change-Id: Ic00ae5589683c2c9525abdaee076d884df6b0d1e
Reviewed-on: https://go-review.googlesource.com/c/go/+/203718
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/internal/obj/mips/asm0.go
src/cmd/internal/obj/mips/obj0.go