1
0
mirror of https://github.com/golang/go synced 2024-11-26 11:48:03 -07:00

cmd/internal/obj: use REGENTRYTMP* in a few more places

There are a few remaining places in obj6 where we hard-code
safe-on-entry registers. Fix those to use the consts.

For #40724.

Change-Id: Ie640521aa67d6c99bc057553dc122160049c6edc
Reviewed-on: https://go-review.googlesource.com/c/go/+/307009
Trust: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
Austin Clements 2021-04-02 13:32:08 -04:00
parent f25d78f8e2
commit 2ebe77a2fd

View File

@ -1046,7 +1046,7 @@ func stacksplit(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog, newprog obj.ProgA
tmp := int16(REG_AX) // use AX for 32-bit tmp := int16(REG_AX) // use AX for 32-bit
if ctxt.Arch.Family == sys.AMD64 { if ctxt.Arch.Family == sys.AMD64 {
// for 64-bit, stay away from register ABI parameter registers, even w/o GOEXPERIMENT=regabi // for 64-bit, stay away from register ABI parameter registers, even w/o GOEXPERIMENT=regabi
tmp = int16(REG_R13) tmp = int16(REGENTRYTMP0)
} }
// large stack: SP-framesize <= stackguard-StackSmall // large stack: SP-framesize <= stackguard-StackSmall
// LEAQ -xxx(SP), tmp // LEAQ -xxx(SP), tmp
@ -1076,8 +1076,8 @@ func stacksplit(ctxt *obj.Link, cursym *obj.LSym, p *obj.Prog, newprog obj.ProgA
tmp1 := int16(REG_SI) tmp1 := int16(REG_SI)
tmp2 := int16(REG_AX) tmp2 := int16(REG_AX)
if ctxt.Arch.Family == sys.AMD64 { if ctxt.Arch.Family == sys.AMD64 {
tmp1 = int16(REG_R13) // register ABI uses REG_SI and REG_AX for parameters. tmp1 = int16(REGENTRYTMP0) // register ABI uses REG_SI and REG_AX for parameters.
tmp2 = int16(REG_R12) tmp2 = int16(REGENTRYTMP1)
} }
// Such a large stack we need to protect against wraparound. // Such a large stack we need to protect against wraparound.
// If SP is close to zero: // If SP is close to zero: