• Michael Munday's avatar
    runtime/cgo: save correct floating point registers on s390x · 06fcc32d
    Michael Munday authored
    When transitioning from C code to Go code we must respect the C
    calling convention. On s390x this means that r6-r13, r15 and f8-f15
    must be saved and restored by functions that use them.
    
    On s390x we were saving the wrong set of floating point registers
    (f0, f2, f4 and f6) rather than f8-f15 which means that Go code
    could clobber registers that C code expects to be restored. This
    CL modifies the crosscall functions on s390x to save/restore the
    correct floating point registers.
    
    Fixes #18035.
    
    Change-Id: I5cc6f552c893a4e677669c8891521bf735492e97
    Reviewed-on: https://go-review.googlesource.com/33571Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    06fcc32d
asm_s390x.s 33.7 KB