...

Text file src/pkg/syscall/asm_darwin_arm64.s

     1	// Copyright 2015 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	
     7	//
     8	// System call support for ARM64, Darwin
     9	//
    10	
    11	// func Syscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
    12	TEXT	·Syscall(SB),NOSPLIT,$0-56
    13		BL	runtime·entersyscall(SB)
    14		MOVD	trap+0(FP), R16
    15		MOVD	a1+8(FP), R0
    16		MOVD	a2+16(FP), R1
    17		MOVD	a3+24(FP), R2
    18		SVC	$0x80
    19		BCC	ok
    20		MOVD	$-1, R1
    21		MOVD	R1, r1+32(FP)	// r1
    22		MOVD	ZR, r2+40(FP)	// r2
    23		MOVD	R0, err+48(FP)	// err
    24		BL	runtime·exitsyscall(SB)
    25		RET
    26	ok:
    27		MOVD	R0, r1+32(FP) // r1
    28		MOVD	R1, r2+40(FP)	// r2
    29		MOVD	ZR, err+48(FP)	// err
    30		BL	runtime·exitsyscall(SB)
    31		RET
    32	
    33	// func RawSyscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
    34	TEXT ·RawSyscall(SB),NOSPLIT,$0-56
    35		MOVD	trap+0(FP), R16	// syscall entry
    36		MOVD	a1+8(FP), R0
    37		MOVD	a2+16(FP), R1
    38		MOVD	a3+24(FP), R2
    39		SVC	$0x80
    40		BCC	ok
    41		MOVD	$-1, R1
    42		MOVD	R1, r1+32(FP)	// r1
    43		MOVD	ZR, r2+40(FP)	// r2
    44		MOVD	R0, err+48(FP)	// err
    45		RET
    46	ok:
    47		MOVD	R0, r1+32(FP) // r1
    48		MOVD	R1, r2+40(FP)	// r2
    49		MOVD	ZR, err+48(FP)	// err
    50		RET
    51	
    52	// func Syscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
    53	TEXT	·Syscall6(SB),NOSPLIT,$0-80
    54		BL	runtime·entersyscall(SB)
    55		MOVD	trap+0(FP), R16	// syscall entry
    56		MOVD	a1+8(FP), R0
    57		MOVD	a2+16(FP), R1
    58		MOVD	a3+24(FP), R2
    59		MOVD	a4+32(FP), R3
    60		MOVD	a5+40(FP), R4
    61		MOVD	a6+48(FP), R5
    62		SVC	$0x80
    63		BCC	ok
    64		MOVD	$-1, R1
    65		MOVD	R1, r1+56(FP)	// r1
    66		MOVD	ZR, r2+64(FP)	// r2
    67		MOVD	R0, err+72(FP)	// err
    68		BL	runtime·exitsyscall(SB)
    69		RET
    70	ok:
    71		MOVD	R0, r1+56(FP) // r1
    72		MOVD	R1, r2+64(FP)	// r2
    73		MOVD	ZR, err+72(FP)	// err
    74		BL	runtime·exitsyscall(SB)
    75		RET
    76	
    77	// func RawSyscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
    78	TEXT	·RawSyscall6(SB),NOSPLIT,$0-80
    79		MOVD	trap+0(FP), R16	// syscall entry
    80		MOVD	a1+8(FP), R0
    81		MOVD	a2+16(FP), R1
    82		MOVD	a3+24(FP), R2
    83		MOVD	a4+32(FP), R3
    84		MOVD	a5+40(FP), R4
    85		MOVD	a6+48(FP), R5
    86		SVC	$0x80
    87		BCC	ok
    88		MOVD	$-1, R1
    89		MOVD	R1, r1+56(FP)	// r1
    90		MOVD	ZR, r2+64(FP)	// r2
    91		MOVD	R0, err+72(FP)	// err
    92		RET
    93	ok:
    94		MOVD	R0, r1+56(FP) // r1
    95		MOVD	R1, r2+64(FP)	// r2
    96		MOVD	ZR, R0
    97		MOVD	R0, err+72(FP)	// err
    98		RET
    99	
   100	// Actually Syscall7
   101	TEXT	·Syscall9(SB),NOSPLIT,$0-104
   102		BL	runtime·entersyscall(SB)
   103		MOVD	num+0(FP), R16	// syscall entry
   104		MOVD	a1+8(FP), R0
   105		MOVD	a2+16(FP), R1
   106		MOVD	a3+24(FP), R2
   107		MOVD	a4+32(FP), R3
   108		MOVD	a5+40(FP), R4
   109		MOVD	a6+48(FP), R5
   110		MOVD	a7+56(FP), R6
   111		//MOVD	a8+64(FP), R7
   112		//MOVD	a9+72(FP), R8
   113		SVC	$0x80
   114		BCC	ok
   115		MOVD	$-1, R1
   116		MOVD	R1, r1+80(FP)	// r1
   117		MOVD	ZR, r2+88(FP)	// r2
   118		MOVD	R0, err+96(FP)	// err
   119		BL	runtime·exitsyscall(SB)
   120		RET
   121	ok:
   122		MOVD	R0, r1+80(FP) // r1
   123		MOVD	R1, r2+88(FP)	// r2
   124		MOVD	ZR, err+96(FP)	// err
   125		BL	runtime·exitsyscall(SB)
   126		RET
   127	

View as plain text