]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: use clock_gettime(CLOCK_REALTIME) for nanosecond-precision time.now on arm64...
authorRuss Cox <rsc@golang.org>
Thu, 27 Oct 2016 13:22:43 +0000 (09:22 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 27 Oct 2016 17:53:13 +0000 (17:53 +0000)
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>
src/runtime/sys_darwin_386.s
src/runtime/sys_darwin_amd64.s
src/runtime/sys_dragonfly_amd64.s
src/runtime/sys_freebsd_386.s
src/runtime/sys_freebsd_amd64.s
src/runtime/sys_linux_arm64.s
src/runtime/sys_linux_mips64x.s

index 9cffe3e4242c3d19c393fce12ec9273f03f35846..45658d0ae66425c031aa99142d0b28f83c1ad627 100644 (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
index 8d1b9b11d9e4363cf04100620e10d2a556de751b..a15ac3e1587f95d5cb987b39ea19074c5e29e34a 100644 (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
index 77fb525aa3c3ec311856f4bd2cf5b6f70117443e..fd960e608a64097f7c147893e00f2a4f1cd750c0 100644 (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
index b37abcef957b32b5a087eeac0cf804bd55ddcbbe..7f3cd56cad9c65978caf8f3f3f2da2ebaf2b0484 100644 (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)
index c3912f710118d5b628510ebd4f6daa1884383c8f..118febde47664152ee2705de0ee69be663744631 100644 (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
index 3bf2e9797202ba1eee261fb946c4c2469568b4e8..1b91b4499d20748a3a26fff0e261fd05ed2a5825 100644 (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
index 031a0892148806bc4dcc33ee7843c60f8a46c4f8..5a75bb81aeaa7375ba2bf4da23e4cc4bbb630bb8 100644 (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