mirror of
https://github.com/golang/go
synced 2024-11-26 01:57:56 -07:00
runtime: check mips64 VDSO clock_gettime return code
We introduced VDSO feature for mips64x in Go1.14, however Linux kernel didn't ship VDSO safe fallback until 4.13. This CL checks vdso return code it may fix this issue. name old time/op new time/op delta Now 174ns ± 0% 176ns ± 0% +1.20% (p=0.000 n=8+9) NowUnixNano 175ns ± 0% 177ns ± 0% +1.13% (p=0.000 n=9+7) FormatNow 1.01µs ± 1% 1.02µs ± 3% ~ (p=0.181 n=10+10) Fixes #39046 Change-Id: Ibcefe4c8334f634c7ef18fa70f3c7dbe8306f224 Reviewed-on: https://go-review.googlesource.com/c/go/+/270717 Run-TryBot: Meng Zhuo <mzh@golangcn.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Michael Pratt <mpratt@google.com> Trust: Meng Zhuo <mzh@golangcn.org>
This commit is contained in:
parent
4787e906cf
commit
df81a15819
@ -250,6 +250,14 @@ noswitch:
|
||||
BEQ R25, fallback
|
||||
|
||||
JAL (R25)
|
||||
// check on vdso call return for kernel compatibility
|
||||
// see https://golang.org/issues/39046
|
||||
// if we get any error make fallback permanent.
|
||||
BEQ R2, R0, finish
|
||||
MOVV R0, runtime·vdsoClockgettimeSym(SB)
|
||||
MOVW $0, R4 // CLOCK_REALTIME
|
||||
MOVV $0(R29), R5
|
||||
JMP fallback
|
||||
|
||||
finish:
|
||||
MOVV 0(R29), R3 // sec
|
||||
@ -311,6 +319,12 @@ noswitch:
|
||||
BEQ R25, fallback
|
||||
|
||||
JAL (R25)
|
||||
// see walltime1 for detail
|
||||
BEQ R2, R0, finish
|
||||
MOVV R0, runtime·vdsoClockgettimeSym(SB)
|
||||
MOVW $1, R4 // CLOCK_MONOTONIC
|
||||
MOVV $0(R29), R5
|
||||
JMP fallback
|
||||
|
||||
finish:
|
||||
MOVV 0(R29), R3 // sec
|
||||
|
Loading…
Reference in New Issue
Block a user