...
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
    18TEXT	·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
    35ok:
    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
    42TEXT	·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
    62ok6:
    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
    69TEXT	·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
    92ok9:
    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
    99TEXT ·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
   114ok1:
   115	MOVL	AX, r1+16(FP)	// r1
   116	MOVL	DX, r2+20(FP)	// r2
   117	MOVL	$0, err+24(FP)	// errno
   118	RET
   119
   120TEXT	·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
   138ok2:
   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