diff options
Diffstat (limited to 'src/pkg/runtime/linux')
| -rw-r--r-- | src/pkg/runtime/linux/386/sys.s | 17 | ||||
| -rw-r--r-- | src/pkg/runtime/linux/amd64/sys.s | 15 | ||||
| -rw-r--r-- | src/pkg/runtime/linux/arm/sys.s | 17 |
3 files changed, 49 insertions, 0 deletions
diff --git a/src/pkg/runtime/linux/386/sys.s b/src/pkg/runtime/linux/386/sys.s index 97d9d5ed9c..7baeb34bce 100644 --- a/src/pkg/runtime/linux/386/sys.s +++ b/src/pkg/runtime/linux/386/sys.s @@ -95,6 +95,23 @@ TEXT runtime·mincore(SB),7,$0-24 CALL *runtime·_vdso(SB) RET +// func now() (sec int64, nsec int32) +TEXT time·now(SB), 7, $32 + MOVL $78, AX // syscall - gettimeofday + LEAL 8(SP), BX + MOVL $0, CX + MOVL $0, DX + CALL *runtime·_vdso(SB) + MOVL 8(SP), AX // sec + MOVL 12(SP), BX // usec + + // sec is in AX, usec in BX + MOVL AX, sec+0(FP) + MOVL $0, sec+4(FP) + IMULL $1000, BX + MOVL BX, nsec+8(FP) + RET + // int64 nanotime(void) so really // void nanotime(int64 *nsec) TEXT runtime·nanotime(SB), 7, $32 diff --git a/src/pkg/runtime/linux/amd64/sys.s b/src/pkg/runtime/linux/amd64/sys.s index 227c8e62cc..ff72a75340 100644 --- a/src/pkg/runtime/linux/amd64/sys.s +++ b/src/pkg/runtime/linux/amd64/sys.s @@ -93,6 +93,21 @@ TEXT runtime·mincore(SB),7,$0-24 SYSCALL RET +// func now() (sec int64, nsec int32) +TEXT time·now(SB), 7, $32 + LEAQ 8(SP), DI + MOVQ $0, SI + MOVQ $0xffffffffff600000, AX + CALL AX + MOVQ 8(SP), AX // sec + MOVL 16(SP), DX // usec + + // sec is in AX, usec in DX + MOVQ AX, sec+0(FP) + IMULQ $1000, DX + MOVL DX, nsec+8(FP) + RET + TEXT runtime·nanotime(SB), 7, $32 LEAQ 8(SP), DI MOVQ $0, SI diff --git a/src/pkg/runtime/linux/arm/sys.s b/src/pkg/runtime/linux/arm/sys.s index 3d26ff0a41..80f956fb08 100644 --- a/src/pkg/runtime/linux/arm/sys.s +++ b/src/pkg/runtime/linux/arm/sys.s @@ -127,6 +127,23 @@ TEXT runtime·mincore(SB),7,$0 SWI $0 RET +TEXT time·now(SB), 7, $32 + MOVW $8(R13), R0 // timeval + MOVW $0, R1 // zone + MOVW $SYS_gettimeofday, R7 + SWI $0 + + MOVW 8(R13), R0 // sec + MOVW 12(R13), R2 // usec + + MOVW R0, 0(FP) + MOVW $0, R1 + MOVW R1, 4(FP) + MOVW $1000, R3 + MUL R3, R2 + MOVW R2, 8(FP) + RET + // int64 nanotime(void) so really // void nanotime(int64 *nsec) TEXT runtime·nanotime(SB),7,$32 |
