aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Munday <munday@ca.ibm.com>2016-06-08 16:11:44 +0000
committerMichael Munday <munday@ca.ibm.com>2016-06-08 18:09:47 +0000
commit0324a3f828d3a2f48751df2bbd54ad20499e598a (patch)
tree67c9a9c2f6d78cc0aa04a714df4e4b97d9da84b7
parent09eedc32e13484d9171519e9f07f3210ba5a7afd (diff)
downloadgo-0324a3f828d3a2f48751df2bbd54ad20499e598a.tar.gz
go-0324a3f828d3a2f48751df2bbd54ad20499e598a.zip
runtime/cgo: restore the g pointer correctly in crosscall_s390x
R13 needs to be set to g because C code may have clobbered R13. Fixes #16006. Change-Id: I66311fe28440e85e589a1695fa1c42416583b4c6 Reviewed-on: https://go-review.googlesource.com/23910 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/cgo/gcc_s390x.S5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/runtime/cgo/gcc_s390x.S b/src/runtime/cgo/gcc_s390x.S
index 6b163d0d21..022f82d93e 100644
--- a/src/runtime/cgo/gcc_s390x.S
+++ b/src/runtime/cgo/gcc_s390x.S
@@ -21,9 +21,12 @@ crosscall_s390x:
stdy %f4, 144(%r15)
stdy %f6, 152(%r15)
- /* assumes this call does not clobber r2 or r15 */
+ /* set r0 to 0 */
xgr %r0, %r0
+ /* restore g pointer */
+ lgr %r13, %r3
+
/* grow stack 8 bytes and call fn */
agfi %r15, -8
basr %r14, %r2