diff options
author | Michael Munday <munday@ca.ibm.com> | 2016-06-08 16:11:44 +0000 |
---|---|---|
committer | Michael Munday <munday@ca.ibm.com> | 2016-06-08 18:09:47 +0000 |
commit | 0324a3f828d3a2f48751df2bbd54ad20499e598a (patch) | |
tree | 67c9a9c2f6d78cc0aa04a714df4e4b97d9da84b7 | |
parent | 09eedc32e13484d9171519e9f07f3210ba5a7afd (diff) | |
download | go-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.S | 5 |
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 |