...

Text file src/syscall/asm_linux_amd64.s

Documentation: syscall

     1// Copyright 2009 The Go Authors. All rights reserved.
     2// Use of this source code is governed by a BSD-style
     3// license that can be found in the LICENSE file.
     4
     5#include "textflag.h"
     6#include "funcdata.h"
     7
     8//
     9// System calls for AMD64, Linux
    10//
    11
    12#define SYS_gettimeofday 96
    13
    14// func rawVforkSyscall(trap, a1, a2, a3 uintptr) (r1, err uintptr)
    15TEXT ·rawVforkSyscall(SB),NOSPLIT|NOFRAME,$0-48
    16	MOVQ	a1+8(FP), DI
    17	MOVQ	a2+16(FP), SI
    18	MOVQ	a3+24(FP), DX
    19	MOVQ	$0, R10
    20	MOVQ	$0, R8
    21	MOVQ	$0, R9
    22	MOVQ	trap+0(FP), AX	// syscall entry
    23	POPQ	R12 // preserve return address
    24	SYSCALL
    25	PUSHQ	R12
    26	CMPQ	AX, $0xfffffffffffff001
    27	JLS	ok2
    28	MOVQ	$-1, r1+32(FP)
    29	NEGQ	AX
    30	MOVQ	AX, err+40(FP)
    31	RET
    32ok2:
    33	MOVQ	AX, r1+32(FP)
    34	MOVQ	$0, err+40(FP)
    35	RET
    36
    37// func rawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
    38TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-48
    39	MOVQ	a1+8(FP), DI
    40	MOVQ	a2+16(FP), SI
    41	MOVQ	a3+24(FP), DX
    42	MOVQ	trap+0(FP), AX	// syscall entry
    43	SYSCALL
    44	MOVQ	AX, r1+32(FP)
    45	MOVQ	DX, r2+40(FP)
    46	RET
    47
    48// func gettimeofday(tv *Timeval) (err uintptr)
    49TEXT ·gettimeofday(SB),NOSPLIT,$0-16
    50	MOVQ	tv+0(FP), DI
    51	MOVQ	$0, SI
    52	MOVQ	runtime·vdsoGettimeofdaySym(SB), AX
    53	TESTQ   AX, AX
    54	JZ fallback
    55	CALL	AX
    56ret:
    57	CMPQ	AX, $0xfffffffffffff001
    58	JLS	ok7
    59	NEGQ	AX
    60	MOVQ	AX, err+8(FP)
    61	RET
    62fallback:
    63	MOVL	$SYS_gettimeofday, AX
    64	SYSCALL
    65	JMP ret
    66ok7:
    67	MOVQ	$0, err+8(FP)
    68	RET

View as plain text