mirror of
https://github.com/golang/go
synced 2024-11-17 22:14:43 -07:00
runtime: save g register during arm64 race detector callbacks
The race detector C code expects the g register (aka R28) to be preserved per the C calling convention. Make sure we save/restore it. Once this is in we can revert the O3 -> O1 change to racebuild. Change-Id: Ia785b2717c136f565d45bed283e87b744e35c62d Reviewed-on: https://go-review.googlesource.com/c/go/+/201744 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
f95bf8b64b
commit
ab81efa3dc
@ -434,13 +434,13 @@ TEXT runtime·racecallbackthunk(SB), NOSPLIT|NOFRAME, $0
|
||||
rest:
|
||||
// Save callee-saved registers (Go code won't respect that).
|
||||
// 8(RSP) and 16(RSP) are for args passed through racecallback
|
||||
SUB $96, RSP
|
||||
SUB $112, RSP
|
||||
MOVD LR, 0(RSP)
|
||||
STP (R19, R20), 24(RSP)
|
||||
STP (R21, R22), 40(RSP)
|
||||
STP (R23, R24), 56(RSP)
|
||||
STP (R25, R26), 72(RSP)
|
||||
MOVD R27, 88(RSP)
|
||||
STP (R27, g), 88(RSP)
|
||||
// Set g = g0.
|
||||
// load_g will clobber R0, Save R0
|
||||
MOVD R0, R13
|
||||
@ -463,8 +463,8 @@ rest:
|
||||
LDP 40(RSP), (R21, R22)
|
||||
LDP 56(RSP), (R23, R24)
|
||||
LDP 72(RSP), (R25, R26)
|
||||
MOVD 88(RSP), R27
|
||||
ADD $96, RSP
|
||||
LDP 88(RSP), (R27, g)
|
||||
ADD $112, RSP
|
||||
JMP (LR)
|
||||
|
||||
// tls_g, g value for each thread in TLS
|
||||
|
Loading…
Reference in New Issue
Block a user