• Cherry Zhang's avatar
    cmd/internal/obj/s390x: mark unsafe points · 4751db93
    Cherry Zhang authored
    For async preemption, we will be using REGTMP as a temporary
    register in injected call on S390X, which will clobber it. So any
    code that uses REGTMP is not safe for async preemption.
    
    In the assembler backend, we expand a Prog to multiple machine
    instructions and use REGTMP as a temporary register if necessary.
    These need to be marked unsafe. Unlike ARM64 and MIPS,
    instructions on S390X are variable length so we don't use the
    length as a condition. Instead, we set a bit on the Prog whenever
    REGTMP is used.
    
    Change-Id: Ie5d14068a950f4c7cea51dff2c4a8bdc19ec9348
    Reviewed-on: https://go-review.googlesource.com/c/go/+/204105
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    Reviewed-by: default avatarKeith Randall <khr@golang.org>
    4751db93
objz.go 18.5 KB