]> Cypherpunks repositories - gostls13.git/commit
runtime: add async preemption support on ARM64
authorCherry Zhang <cherryyz@google.com>
Mon, 21 Oct 2019 18:07:50 +0000 (14:07 -0400)
committerCherry Zhang <cherryyz@google.com>
Thu, 7 Nov 2019 19:18:12 +0000 (19:18 +0000)
commit1b0b9809046c1862f8ea0240fe016e516c67676f
treefcfd68f04a70b1adaa8bff1757582d53fec7298d
parent47360884638e5c8ad65003515b324ec33b823861
runtime: add async preemption support on ARM64

This CL adds support of call injection and async preemption on
ARM64.

There seems no way to return from the injected call without
clobbering *any* register. So we have to clobber one, which is
chosen to be REGTMP. Previous CLs have marked code sequences
that use REGTMP async-nonpreemtible.

Change-Id: Ieca4e3ba5557adf3d0f5d923bce5f1769b58e30b
Reviewed-on: https://go-review.googlesource.com/c/go/+/203461
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
src/cmd/compile/internal/ssa/gen/ARM64Ops.go
src/runtime/mkpreempt.go
src/runtime/preempt_arm64.s
src/runtime/signal_arm64.go