Black Lives Matter. Support the Equal Justice Initiative.

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

View as plain text