github.com/c12o16h1/go/src@v0.0.0-20200114212001-5a151c0f00ed/syscall/asm_openbsd_arm64.s (about)

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