...

Text file src/pkg/syscall/asm_openbsd_arm64.s

     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

View as plain text