...

Text file src/pkg/syscall/asm_darwin_386.s

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

View as plain text