diff options
author | Shenghou Ma <minux@golang.org> | 2016-03-24 19:35:10 -0400 |
---|---|---|
committer | Minux Ma <minux@golang.org> | 2016-03-25 23:04:44 +0000 |
commit | a7f7a9cca749a676cee73f28e48c6f7bffa64807 (patch) | |
tree | b11d7035a62978499809f235867225c0b94f5687 /src/runtime/rt0_linux_arm64.s | |
parent | 71916437fb2bd788a9ce491830f4233aee4a9149 (diff) | |
download | go-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.s | 18 |
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 |