diff options
author | Cherry Zhang <cherryyz@google.com> | 2019-10-21 14:07:50 -0400 |
---|---|---|
committer | Cherry Zhang <cherryyz@google.com> | 2019-11-07 19:18:12 +0000 |
commit | 1b0b9809046c1862f8ea0240fe016e516c67676f (patch) | |
tree | fcfd68f04a70b1adaa8bff1757582d53fec7298d /src/cmd/compile/internal/ssa/gen/ARM64Ops.go | |
parent | 47360884638e5c8ad65003515b324ec33b823861 (diff) | |
download | go-1b0b9809046c1862f8ea0240fe016e516c67676f.tar.gz go-1b0b9809046c1862f8ea0240fe016e516c67676f.zip |
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>
Diffstat (limited to 'src/cmd/compile/internal/ssa/gen/ARM64Ops.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/gen/ARM64Ops.go | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go index 6fdb5729c5..51a610fc76 100644 --- a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go +++ b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go @@ -96,6 +96,8 @@ var regNamesARM64 = []string{ "F30", "F31", + // If you add registers, update asyncPreempt in runtime. + // pseudo-registers "SB", } |