...
Run Format

Text file src/syscall/asm_unix_386.s

Documentation: syscall

     1	// +build netbsd freebsd openbsd
     2	
     3	// Copyright 2009 The Go Authors. All rights reserved.
     4	// Use of this source code is governed by a BSD-style
     5	// license that can be found in the LICENSE file.
     6	
     7	#include "textflag.h"
     8	#include "funcdata.h"
     9	
    10	//
    11	// System call support for some 386 unixes
    12	//
    13	
    14	// func Syscall(trap int32, a1, a2, a3 int32) (r1, r2, err int32);
    15	// func Syscall6(trap int32, a1, a2, a3, a4, a5, a6 int32) (r1, r2, err int32);
    16	// Trap # in AX, args on stack above caller pc.
    17	
    18	TEXT	·Syscall(SB),NOSPLIT,$0-28
    19		CALL	runtime·entersyscall(SB)
    20		MOVL	trap+0(FP), AX	// syscall entry
    21		// slide args down on top of system call number
    22		LEAL		8(SP), SI
    23		LEAL		4(SP), DI
    24		CLD
    25		MOVSL
    26		MOVSL
    27		MOVSL
    28		INT	$0x80
    29		JAE	ok
    30		MOVL	$-1, r1+16(FP)	// r1
    31		MOVL	$-1, r2+20(FP)	// r2
    32		MOVL	AX, err+24(FP)	// errno
    33		CALL	runtime·exitsyscall(SB)
    34		RET
    35	ok:
    36		MOVL	AX, r1+16(FP)	// r1
    37		MOVL	DX, r2+20(FP)	// r2
    38		MOVL	$0, err+24(FP)	// errno
    39		CALL	runtime·exitsyscall(SB)
    40		RET
    41	
    42	TEXT	·Syscall6(SB),NOSPLIT,$0-40
    43		CALL	runtime·entersyscall(SB)
    44		MOVL	trap+0(FP), AX	// syscall entry
    45		// slide args down on top of system call number
    46		LEAL		8(SP), SI
    47		LEAL		4(SP), DI
    48		CLD
    49		MOVSL
    50		MOVSL
    51		MOVSL
    52		MOVSL
    53		MOVSL
    54		MOVSL
    55		INT	$0x80
    56		JAE	ok6
    57		MOVL	$-1, r1+28(FP)	// r1
    58		MOVL	$-1, r2+32(FP)	// r2
    59		MOVL	AX, err+36(FP)	// errno
    60		CALL	runtime·exitsyscall(SB)
    61		RET
    62	ok6:
    63		MOVL	AX, r1+28(FP)	// r1
    64		MOVL	DX, r2+32(FP)	// r2
    65		MOVL	$0, err+36(FP)	// errno
    66		CALL	runtime·exitsyscall(SB)
    67		RET
    68	
    69	TEXT	·Syscall9(SB),NOSPLIT,$0-52
    70		CALL	runtime·entersyscall(SB)
    71		MOVL	num+0(FP), AX	// syscall entry
    72		// slide args down on top of system call number
    73		LEAL		8(SP), SI
    74		LEAL		4(SP), DI
    75		CLD
    76		MOVSL
    77		MOVSL
    78		MOVSL
    79		MOVSL
    80		MOVSL
    81		MOVSL
    82		MOVSL
    83		MOVSL
    84		MOVSL
    85		INT	$0x80
    86		JAE	ok9
    87		MOVL	$-1, r1+40(FP)	// r1
    88		MOVL	$-1, r2+44(FP)	// r2
    89		MOVL	AX, err+48(FP)	// errno
    90		CALL	runtime·exitsyscall(SB)
    91		RET
    92	ok9:
    93		MOVL	AX, r1+40(FP)	// r1
    94		MOVL	DX, r2+44(FP)	// r2
    95		MOVL	$0, err+48(FP)	// errno
    96		CALL	runtime·exitsyscall(SB)
    97		RET
    98	
    99	TEXT ·RawSyscall(SB),NOSPLIT,$0-28
   100		MOVL	trap+0(FP), AX	// syscall entry
   101		// slide args down on top of system call number
   102		LEAL		8(SP), SI
   103		LEAL		4(SP), DI
   104		CLD
   105		MOVSL
   106		MOVSL
   107		MOVSL
   108		INT	$0x80
   109		JAE	ok1
   110		MOVL	$-1, r1+16(FP)	// r1
   111		MOVL	$-1, r2+20(FP)	// r2
   112		MOVL	AX, err+24(FP)	// errno
   113		RET
   114	ok1:
   115		MOVL	AX, r1+16(FP)	// r1
   116		MOVL	DX, r2+20(FP)	// r2
   117		MOVL	$0, err+24(FP)	// errno
   118		RET
   119	
   120	TEXT	·RawSyscall6(SB),NOSPLIT,$0-40
   121		MOVL	trap+0(FP), AX	// syscall entry
   122		// slide args down on top of system call number
   123		LEAL		8(SP), SI
   124		LEAL		4(SP), DI
   125		CLD
   126		MOVSL
   127		MOVSL
   128		MOVSL
   129		MOVSL
   130		MOVSL
   131		MOVSL
   132		INT	$0x80
   133		JAE	ok2
   134		MOVL	$-1, r1+28(FP)	// r1
   135		MOVL	$-1, r2+32(FP)	// r2
   136		MOVL	AX, err+36(FP)	// errno
   137		RET
   138	ok2:
   139		MOVL	AX, r1+28(FP)	// r1
   140		MOVL	DX, r2+32(FP)	// r2
   141		MOVL	$0, err+36(FP)	// errno
   142		RET

View as plain text