aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/rt0_linux_arm64.s
diff options
context:
space:
mode:
authorShenghou Ma <minux@golang.org>2016-03-24 19:35:10 -0400
committerMinux Ma <minux@golang.org>2016-03-25 23:04:44 +0000
commita7f7a9cca749a676cee73f28e48c6f7bffa64807 (patch)
treeb11d7035a62978499809f235867225c0b94f5687 /src/runtime/rt0_linux_arm64.s
parent71916437fb2bd788a9ce491830f4233aee4a9149 (diff)
downloadgo-a7f7a9cca749a676cee73f28e48c6f7bffa64807.tar.gz
go-a7f7a9cca749a676cee73f28e48c6f7bffa64807.zip
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>
Diffstat (limited to 'src/runtime/rt0_linux_arm64.s')
-rw-r--r--src/runtime/rt0_linux_arm64.s18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/runtime/rt0_linux_arm64.s b/src/runtime/rt0_linux_arm64.s
index 31c2367bca..d01d415945 100644
--- a/src/runtime/rt0_linux_arm64.s
+++ b/src/runtime/rt0_linux_arm64.s
@@ -11,7 +11,7 @@ TEXT _rt0_arm64_linux(SB),NOSPLIT,$-8
// When building with -buildmode=c-shared, this symbol is called when the shared
// library is loaded.
-TEXT _rt0_arm64_linux_lib(SB),NOSPLIT,$88
+TEXT _rt0_arm64_linux_lib(SB),NOSPLIT,$168
// Preserve callee-save registers.
MOVD R19, 24(RSP)
MOVD R20, 32(RSP)
@@ -22,6 +22,14 @@ TEXT _rt0_arm64_linux_lib(SB),NOSPLIT,$88
MOVD R25, 72(RSP)
MOVD R26, 80(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 R1, _rt0_arm64_linux_lib_argv<>(SB)
@@ -58,6 +66,14 @@ restore:
MOVD 72(RSP), R25
MOVD 80(RSP), R26
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
TEXT _rt0_arm64_linux_lib_go(SB),NOSPLIT,$0