...

Text file src/syscall/asm_darwin_arm64.s

Documentation: syscall

     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)
    12TEXT	·Syscall(SB),NOSPLIT,$0-56
    13	BL	runtime·entersyscall<ABIInternal>(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<ABIInternal>(SB)
    25	RET
    26ok:
    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<ABIInternal>(SB)
    31	RET
    32
    33// func RawSyscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
    34TEXT ·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
    46ok:
    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)
    53TEXT	·Syscall6(SB),NOSPLIT,$0-80
    54	BL	runtime·entersyscall<ABIInternal>(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<ABIInternal>(SB)
    69	RET
    70ok:
    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<ABIInternal>(SB)
    75	RET
    76
    77// func RawSyscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
    78TEXT	·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
    93ok:
    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
   101TEXT	·Syscall9(SB),NOSPLIT,$0-104
   102	BL	runtime·entersyscall<ABIInternal>(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<ABIInternal>(SB)
   120	RET
   121ok:
   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<ABIInternal>(SB)
   126	RET
   127

View as plain text