1
0
mirror of https://github.com/golang/go synced 2024-11-18 05:54:49 -07:00

runtime: use clock_gettime(CLOCK_REALTIME) for nanosecond-precision time.now on arm64, mips64x

Assembly copied from the clock_gettime(CLOCK_MONOTONIC)
call in runtime.nanotime in these files and then modified to use
CLOCK_REALTIME.

Also comment system call numbers in a few other files.

Fixes #11222.

Change-Id: Ie132086de7386f865908183aac2713f90fc73e0d
Reviewed-on: https://go-review.googlesource.com/32177
Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
Russ Cox 2016-10-27 09:22:43 -04:00
parent aff37662d1
commit 5594074dcd
7 changed files with 13 additions and 18 deletions

View File

@ -200,7 +200,7 @@ systime:
MOVL AX, 4(SP)
MOVL $0, 8(SP) // time zone pointer
MOVL $0, 12(SP) // required as of Sierra; Issue 16570
MOVL $116, AX
MOVL $116, AX // SYS_GETTIMEOFDAY
INT $0x80
CMPL AX, $0
JNE inreg

View File

@ -158,7 +158,7 @@ systime:
MOVQ SP, DI
MOVQ $0, SI
MOVQ $0, DX // required as of Sierra; Issue 16570
MOVL $(0x2000000+116), AX
MOVL $(0x2000000+116), AX // gettimeofday
SYSCALL
CMPQ AX, $0
JNE inreg

View File

@ -150,7 +150,7 @@ TEXT runtime·setitimer(SB), NOSPLIT, $-8
// func now() (sec int64, nsec int32)
TEXT time·now(SB), NOSPLIT, $32
MOVL $232, AX
MOVL $232, AX // clock_gettime
MOVQ $0, DI // CLOCK_REALTIME
LEAQ 8(SP), SI
SYSCALL

View File

@ -161,7 +161,7 @@ TEXT runtime·setitimer(SB), NOSPLIT, $-4
// func now() (sec int64, nsec int32)
TEXT time·now(SB), NOSPLIT, $32
MOVL $232, AX
MOVL $232, AX // clock_gettime
LEAL 12(SP), BX
MOVL $0, 4(SP) // CLOCK_REALTIME
MOVL BX, 8(SP)

View File

@ -144,7 +144,7 @@ TEXT runtime·setitimer(SB), NOSPLIT, $-8
// func now() (sec int64, nsec int32)
TEXT time·now(SB), NOSPLIT, $32
MOVL $232, AX
MOVL $232, AX // clock_gettime
MOVQ $0, DI // CLOCK_REALTIME
LEAQ 8(SP), SI
SYSCALL

View File

@ -184,14 +184,12 @@ TEXT runtime·mincore(SB),NOSPLIT,$-8-28
// func now() (sec int64, nsec int32)
TEXT time·now(SB),NOSPLIT,$24-12
MOVD RSP, R0
MOVD $0, R1
MOVD $SYS_gettimeofday, R8
MOVW $0, R0 // CLOCK_REALTIME
MOVD RSP, R1
MOVD $SYS_clock_gettime, R8
SVC
MOVD 0(RSP), R3 // sec
MOVD 8(RSP), R5 // usec
MOVD $1000, R4
MUL R4, R5
MOVD 8(RSP), R5 // nsec
MOVD R3, sec+0(FP)
MOVW R5, nsec+8(FP)
RET

View File

@ -174,15 +174,12 @@ TEXT runtime·mincore(SB),NOSPLIT,$-8-28
// func now() (sec int64, nsec int32)
TEXT time·now(SB),NOSPLIT,$16
MOVV $0(R29), R4
MOVV $0, R5
MOVV $SYS_gettimeofday, R2
MOVW $0, R4 // CLOCK_REALTIME
MOVV $0(R29), R5
MOVV $SYS_clock_gettime, R2
SYSCALL
MOVV 0(R29), R3 // sec
MOVV 8(R29), R5 // usec
MOVV $1000, R4
MULVU R4, R5
MOVV LO, R5
MOVV 8(R29), R5 // nsec
MOVV R3, sec+0(FP)
MOVW R5, nsec+8(FP)
RET