Black Lives Matter. Support the Equal Justice Initiative.

Text file src/syscall/asm_netbsd_arm64.s

Documentation: syscall

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

View as plain text