mirror of https://github.com/golang/go.git
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>
This commit is contained in:
parent
f65abf6ddc
commit
fdde7ba2a2
|
|
@ -330,9 +330,9 @@ sigtrampnog:
|
||||||
// Lock sigprofCallersUse.
|
// Lock sigprofCallersUse.
|
||||||
MOVL $0, AX
|
MOVL $0, AX
|
||||||
MOVL $1, CX
|
MOVL $1, CX
|
||||||
MOVQ $runtime·sigprofCallersUse(SB), BX
|
MOVQ $runtime·sigprofCallersUse(SB), R11
|
||||||
LOCK
|
LOCK
|
||||||
CMPXCHGL CX, 0(BX)
|
CMPXCHGL CX, 0(R11)
|
||||||
JNZ sigtramp // Skip stack trace if already locked.
|
JNZ sigtramp // Skip stack trace if already locked.
|
||||||
|
|
||||||
// Jump to the traceback function in runtime/cgo.
|
// Jump to the traceback function in runtime/cgo.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue