mirror of
https://github.com/golang/go
synced 2024-11-12 02:20:23 -07:00
runtime, runtime/cgo: save callee-saved FP registers on arm64
For #14876. Change-Id: I0992859264cbaf9c9b691fad53345bbb01b4cf3b Reviewed-on: https://go-review.googlesource.com/21085 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
71916437fb
commit
a7f7a9cca7
@ -16,7 +16,7 @@ TEXT crosscall2(SB),NOSPLIT,$-8
|
|||||||
* first arg.
|
* first arg.
|
||||||
* TODO(minux): use LDP/STP here if it matters.
|
* TODO(minux): use LDP/STP here if it matters.
|
||||||
*/
|
*/
|
||||||
SUB $128, RSP
|
SUB $(8*24), RSP
|
||||||
MOVD R1, (8*1)(RSP)
|
MOVD R1, (8*1)(RSP)
|
||||||
MOVD R2, (8*2)(RSP)
|
MOVD R2, (8*2)(RSP)
|
||||||
MOVD R19, (8*3)(RSP)
|
MOVD R19, (8*3)(RSP)
|
||||||
@ -31,6 +31,14 @@ TEXT crosscall2(SB),NOSPLIT,$-8
|
|||||||
MOVD g, (8*12)(RSP)
|
MOVD g, (8*12)(RSP)
|
||||||
MOVD R29, (8*13)(RSP)
|
MOVD R29, (8*13)(RSP)
|
||||||
MOVD R30, (8*14)(RSP)
|
MOVD R30, (8*14)(RSP)
|
||||||
|
FMOVD F8, (8*15)(RSP)
|
||||||
|
FMOVD F9, (8*16)(RSP)
|
||||||
|
FMOVD F10, (8*17)(RSP)
|
||||||
|
FMOVD F11, (8*18)(RSP)
|
||||||
|
FMOVD F12, (8*19)(RSP)
|
||||||
|
FMOVD F13, (8*20)(RSP)
|
||||||
|
FMOVD F14, (8*21)(RSP)
|
||||||
|
FMOVD F15, (8*22)(RSP)
|
||||||
|
|
||||||
MOVD R0, R19
|
MOVD R0, R19
|
||||||
|
|
||||||
@ -53,5 +61,13 @@ TEXT crosscall2(SB),NOSPLIT,$-8
|
|||||||
MOVD (8*12)(RSP), g
|
MOVD (8*12)(RSP), g
|
||||||
MOVD (8*13)(RSP), R29
|
MOVD (8*13)(RSP), R29
|
||||||
MOVD (8*14)(RSP), R30
|
MOVD (8*14)(RSP), R30
|
||||||
ADD $128, RSP
|
FMOVD (8*15)(RSP), F8
|
||||||
|
FMOVD (8*16)(RSP), F9
|
||||||
|
FMOVD (8*17)(RSP), F10
|
||||||
|
FMOVD (8*18)(RSP), F11
|
||||||
|
FMOVD (8*19)(RSP), F12
|
||||||
|
FMOVD (8*20)(RSP), F13
|
||||||
|
FMOVD (8*21)(RSP), F14
|
||||||
|
FMOVD (8*22)(RSP), F15
|
||||||
|
ADD $(8*24), RSP
|
||||||
RET
|
RET
|
||||||
|
@ -16,7 +16,7 @@ TEXT _rt0_arm64_darwin(SB),NOSPLIT,$-8
|
|||||||
//
|
//
|
||||||
// Note that all currently shipping darwin/arm64 platforms require
|
// Note that all currently shipping darwin/arm64 platforms require
|
||||||
// cgo and do not support c-shared.
|
// cgo and do not support c-shared.
|
||||||
TEXT _rt0_arm64_darwin_lib(SB),NOSPLIT,$88
|
TEXT _rt0_arm64_darwin_lib(SB),NOSPLIT,$168
|
||||||
// Preserve callee-save registers.
|
// Preserve callee-save registers.
|
||||||
MOVD R19, 24(RSP)
|
MOVD R19, 24(RSP)
|
||||||
MOVD R20, 32(RSP)
|
MOVD R20, 32(RSP)
|
||||||
@ -27,6 +27,14 @@ TEXT _rt0_arm64_darwin_lib(SB),NOSPLIT,$88
|
|||||||
MOVD R25, 72(RSP)
|
MOVD R25, 72(RSP)
|
||||||
MOVD R26, 80(RSP)
|
MOVD R26, 80(RSP)
|
||||||
MOVD R27, 88(RSP)
|
MOVD R27, 88(RSP)
|
||||||
|
FMOVD F8, 96(RSP)
|
||||||
|
FMOVD F9, 104(RSP)
|
||||||
|
FMOVD F10, 112(RSP)
|
||||||
|
FMOVD F11, 120(RSP)
|
||||||
|
FMOVD F12, 128(RSP)
|
||||||
|
FMOVD F13, 136(RSP)
|
||||||
|
FMOVD F14, 144(RSP)
|
||||||
|
FMOVD F15, 152(RSP)
|
||||||
|
|
||||||
MOVD R0, _rt0_arm64_darwin_lib_argc<>(SB)
|
MOVD R0, _rt0_arm64_darwin_lib_argc<>(SB)
|
||||||
MOVD R1, _rt0_arm64_darwin_lib_argv<>(SB)
|
MOVD R1, _rt0_arm64_darwin_lib_argv<>(SB)
|
||||||
@ -51,6 +59,14 @@ TEXT _rt0_arm64_darwin_lib(SB),NOSPLIT,$88
|
|||||||
MOVD 72(RSP), R25
|
MOVD 72(RSP), R25
|
||||||
MOVD 80(RSP), R26
|
MOVD 80(RSP), R26
|
||||||
MOVD 88(RSP), R27
|
MOVD 88(RSP), R27
|
||||||
|
FMOVD 96(RSP), F8
|
||||||
|
FMOVD 104(RSP), F9
|
||||||
|
FMOVD 112(RSP), F10
|
||||||
|
FMOVD 120(RSP), F11
|
||||||
|
FMOVD 128(RSP), F12
|
||||||
|
FMOVD 136(RSP), F13
|
||||||
|
FMOVD 144(RSP), F14
|
||||||
|
FMOVD 152(RSP), F15
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT _rt0_arm64_darwin_lib_go(SB),NOSPLIT,$0
|
TEXT _rt0_arm64_darwin_lib_go(SB),NOSPLIT,$0
|
||||||
|
@ -11,7 +11,7 @@ TEXT _rt0_arm64_linux(SB),NOSPLIT,$-8
|
|||||||
|
|
||||||
// When building with -buildmode=c-shared, this symbol is called when the shared
|
// When building with -buildmode=c-shared, this symbol is called when the shared
|
||||||
// library is loaded.
|
// library is loaded.
|
||||||
TEXT _rt0_arm64_linux_lib(SB),NOSPLIT,$88
|
TEXT _rt0_arm64_linux_lib(SB),NOSPLIT,$168
|
||||||
// Preserve callee-save registers.
|
// Preserve callee-save registers.
|
||||||
MOVD R19, 24(RSP)
|
MOVD R19, 24(RSP)
|
||||||
MOVD R20, 32(RSP)
|
MOVD R20, 32(RSP)
|
||||||
@ -22,6 +22,14 @@ TEXT _rt0_arm64_linux_lib(SB),NOSPLIT,$88
|
|||||||
MOVD R25, 72(RSP)
|
MOVD R25, 72(RSP)
|
||||||
MOVD R26, 80(RSP)
|
MOVD R26, 80(RSP)
|
||||||
MOVD R27, 88(RSP)
|
MOVD R27, 88(RSP)
|
||||||
|
FMOVD F8, 96(RSP)
|
||||||
|
FMOVD F9, 104(RSP)
|
||||||
|
FMOVD F10, 112(RSP)
|
||||||
|
FMOVD F11, 120(RSP)
|
||||||
|
FMOVD F12, 128(RSP)
|
||||||
|
FMOVD F13, 136(RSP)
|
||||||
|
FMOVD F14, 144(RSP)
|
||||||
|
FMOVD F15, 152(RSP)
|
||||||
|
|
||||||
MOVD R0, _rt0_arm64_linux_lib_argc<>(SB)
|
MOVD R0, _rt0_arm64_linux_lib_argc<>(SB)
|
||||||
MOVD R1, _rt0_arm64_linux_lib_argv<>(SB)
|
MOVD R1, _rt0_arm64_linux_lib_argv<>(SB)
|
||||||
@ -58,6 +66,14 @@ restore:
|
|||||||
MOVD 72(RSP), R25
|
MOVD 72(RSP), R25
|
||||||
MOVD 80(RSP), R26
|
MOVD 80(RSP), R26
|
||||||
MOVD 88(RSP), R27
|
MOVD 88(RSP), R27
|
||||||
|
FMOVD 96(RSP), F8
|
||||||
|
FMOVD 104(RSP), F9
|
||||||
|
FMOVD 112(RSP), F10
|
||||||
|
FMOVD 120(RSP), F11
|
||||||
|
FMOVD 128(RSP), F12
|
||||||
|
FMOVD 136(RSP), F13
|
||||||
|
FMOVD 144(RSP), F14
|
||||||
|
FMOVD 152(RSP), F15
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT _rt0_arm64_linux_lib_go(SB),NOSPLIT,$0
|
TEXT _rt0_arm64_linux_lib_go(SB),NOSPLIT,$0
|
||||||
|
Loading…
Reference in New Issue
Block a user