aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_linux_amd64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/sys_linux_amd64.s')
-rw-r--r--src/runtime/sys_linux_amd64.s31
1 files changed, 11 insertions, 20 deletions
diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
index 8d90813589..681cd20274 100644
--- a/src/runtime/sys_linux_amd64.s
+++ b/src/runtime/sys_linux_amd64.s
@@ -40,6 +40,7 @@
#define SYS_futex 202
#define SYS_sched_getaffinity 204
#define SYS_epoll_create 213
+#define SYS_clock_gettime 228
#define SYS_exit_group 231
#define SYS_epoll_ctl 233
#define SYS_tgkill 234
@@ -241,15 +242,15 @@ noswitch:
SUBQ $16, SP // Space for results
ANDQ $~15, SP // Align for C code
+ MOVL $0, DI // CLOCK_REALTIME
+ LEAQ 0(SP), SI
MOVQ runtime·vdsoClockgettimeSym(SB), AX
CMPQ AX, $0
JEQ fallback
- MOVL $0, DI // CLOCK_REALTIME
- LEAQ 0(SP), SI
CALL AX
+ret:
MOVQ 0(SP), AX // sec
MOVQ 8(SP), DX // nsec
-ret:
MOVQ R12, SP // Restore real SP
// Restore vdsoPC, vdsoSP
// We don't worry about being signaled between the two stores.
@@ -264,13 +265,8 @@ ret:
MOVL DX, nsec+8(FP)
RET
fallback:
- LEAQ 0(SP), DI
- MOVQ $0, SI
- MOVQ runtime·vdsoGettimeofdaySym(SB), AX
- CALL AX
- MOVQ 0(SP), AX // sec
- MOVL 8(SP), DX // usec
- IMULQ $1000, DX
+ MOVQ $SYS_clock_gettime, AX
+ SYSCALL
JMP ret
// func nanotime1() int64
@@ -306,15 +302,15 @@ noswitch:
SUBQ $16, SP // Space for results
ANDQ $~15, SP // Align for C code
+ MOVL $1, DI // CLOCK_MONOTONIC
+ LEAQ 0(SP), SI
MOVQ runtime·vdsoClockgettimeSym(SB), AX
CMPQ AX, $0
JEQ fallback
- MOVL $1, DI // CLOCK_MONOTONIC
- LEAQ 0(SP), SI
CALL AX
+ret:
MOVQ 0(SP), AX // sec
MOVQ 8(SP), DX // nsec
-ret:
MOVQ R12, SP // Restore real SP
// Restore vdsoPC, vdsoSP
// We don't worry about being signaled between the two stores.
@@ -332,13 +328,8 @@ ret:
MOVQ AX, ret+0(FP)
RET
fallback:
- LEAQ 0(SP), DI
- MOVQ $0, SI
- MOVQ runtime·vdsoGettimeofdaySym(SB), AX
- CALL AX
- MOVQ 0(SP), AX // sec
- MOVL 8(SP), DX // usec
- IMULQ $1000, DX
+ MOVQ $SYS_clock_gettime, AX
+ SYSCALL
JMP ret
TEXT runtime·rtsigprocmask(SB),NOSPLIT,$0-28