diff options
| author | Russ Cox <rsc@golang.org> | 2011-11-30 11:59:44 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-11-30 11:59:44 -0500 |
| commit | efe3d35fc590bf8b439f56070aa1f070125c6e8e (patch) | |
| tree | 135f305b0e383917e799cb419419a42bfc0430f8 /src/pkg/runtime/linux | |
| parent | 849fc19cab2c3059379b21dde019f521ce772f5c (diff) | |
| download | go-efe3d35fc590bf8b439f56070aa1f070125c6e8e.tar.xz | |
time: new Time, Duration, ZoneInfo types
R=r, bradfitz, gri, dsymonds, iant
CC=golang-dev
https://golang.org/cl/5392041
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 |
