aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2017-01-11 17:39:41 -0500
committerIan Lance Taylor <iant@golang.org>2017-01-12 00:06:32 +0000
commitfdde7ba2a2d35839d26c09ca79f1d8f3398f6e02 (patch)
tree8d00115f0915594634efac700b8f4563231b4f4b
parentf65abf6ddc8d1f3d403a9195fd74eaffa022b07f (diff)
downloadgo-fdde7ba2a2d35839d26c09ca79f1d8f3398f6e02.tar.gz
go-fdde7ba2a2d35839d26c09ca79f1d8f3398f6e02.zip
runtime: avoid clobbering C callee-save register in cgoSigtramp
Use R11 (a caller-saved temp register) instead of RBX (a callee-saved register). I believe this only affects linux/amd64, since it is the only platform with a non-trivial cgoSigtramp implementation. Updates #18328. Change-Id: I3d35c4512624184d5a8ece653fa09ddf50e079a2 Reviewed-on: https://go-review.googlesource.com/35068 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-rw-r--r--src/runtime/sys_linux_amd64.s4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
index 839df16406..6ddcb30ae2 100644
--- a/src/runtime/sys_linux_amd64.s
+++ b/src/runtime/sys_linux_amd64.s
@@ -330,9 +330,9 @@ sigtrampnog:
// Lock sigprofCallersUse.
MOVL $0, AX
MOVL $1, CX
- MOVQ $runtime·sigprofCallersUse(SB), BX
+ MOVQ $runtime·sigprofCallersUse(SB), R11
LOCK
- CMPXCHGL CX, 0(BX)
+ CMPXCHGL CX, 0(R11)
JNZ sigtramp // Skip stack trace if already locked.
// Jump to the traceback function in runtime/cgo.