aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_linux_mips64x.s
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2021-09-22 18:32:45 -0400
committerCherry Mui <cherryyz@google.com>2021-09-24 14:52:47 +0000
commit217507eb035933bac6c990844f0d71d6000fd339 (patch)
tree52f6e6218b248f92e0a2ad3f919143d16e5ea875 /src/runtime/sys_linux_mips64x.s
parentfe8347b61a5e33506c9e3827877ec318c90377e6 (diff)
downloadgo-217507eb035933bac6c990844f0d71d6000fd339.tar.xz
runtime: set vdsoSP to caller's SP consistently
m.vdsoSP should be set to the SP of the caller of nanotime1, instead of the SP of nanotime1 itself, which matches m.vdsoPC. Otherwise the unmatched vdsoPC and vdsoSP would make the stack trace look like recursive. We already do it correctly on AMD64, 386, and RISCV64. This CL fixes the rest. Fixes #47324. Change-Id: I98b6fcfbe9fc6bdd28b8fe2a1299b7c505371dd4 Reviewed-on: https://go-review.googlesource.com/c/go/+/337590 Trust: Cherry Mui <cherryyz@google.com> Trust: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Diffstat (limited to 'src/runtime/sys_linux_mips64x.s')
-rw-r--r--src/runtime/sys_linux_mips64x.s6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s
index e18d291445..7529a0ed27 100644
--- a/src/runtime/sys_linux_mips64x.s
+++ b/src/runtime/sys_linux_mips64x.s
@@ -229,8 +229,9 @@ TEXT runtime·walltime(SB),NOSPLIT,$16-12
MOVV R2, 8(R29)
MOVV R3, 16(R29)
+ MOVV $ret-8(FP), R2 // caller's SP
MOVV R31, m_vdsoPC(R17)
- MOVV R29, m_vdsoSP(R17)
+ MOVV R2, m_vdsoSP(R17)
MOVV m_curg(R17), R4
MOVV g, R5
@@ -298,8 +299,9 @@ TEXT runtime·nanotime1(SB),NOSPLIT,$16-8
MOVV R2, 8(R29)
MOVV R3, 16(R29)
+ MOVV $ret-8(FP), R2 // caller's SP
MOVV R31, m_vdsoPC(R17)
- MOVV R29, m_vdsoSP(R17)
+ MOVV R2, m_vdsoSP(R17)
MOVV m_curg(R17), R4
MOVV g, R5