mirror of https://go.googlesource.com/go
37 lines
786 B
ArmAsm
37 lines
786 B
ArmAsm
// Copyright 2011 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build !faketime
|
|
|
|
#include "go_asm.h"
|
|
#include "textflag.h"
|
|
#include "time_windows.h"
|
|
|
|
TEXT time·now(SB),NOSPLIT,$0-24
|
|
MOVQ $_INTERRUPT_TIME, DI
|
|
MOVQ time_lo(DI), AX
|
|
IMULQ $100, AX
|
|
MOVQ AX, mono+16(FP)
|
|
|
|
MOVQ $_SYSTEM_TIME, DI
|
|
MOVQ time_lo(DI), AX
|
|
MOVQ $116444736000000000, DI
|
|
SUBQ DI, AX
|
|
IMULQ $100, AX
|
|
|
|
// generated code for
|
|
// func f(x uint64) (uint64, uint64) { return x/1000000000, x%1000000000 }
|
|
// adapted to reduce duplication
|
|
MOVQ AX, CX
|
|
MOVQ $1360296554856532783, AX
|
|
MULQ CX
|
|
ADDQ CX, DX
|
|
RCRQ $1, DX
|
|
SHRQ $29, DX
|
|
MOVQ DX, sec+0(FP)
|
|
IMULQ $1000000000, DX
|
|
SUBQ DX, CX
|
|
MOVL CX, nsec+8(FP)
|
|
RET
|