asm_linux_arm64.s raw

   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  //go:build linux && arm64 && gc
   6  
   7  #include "textflag.h"
   8  
   9  // Just jump to package syscall's implementation for all these functions.
  10  // The runtime may know about them.
  11  
  12  TEXT ·Syscall(SB),NOSPLIT,$0-56
  13  	B	syscall·Syscall(SB)
  14  
  15  TEXT ·Syscall6(SB),NOSPLIT,$0-80
  16  	B	syscall·Syscall6(SB)
  17  
  18  TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
  19  	BL	runtime·entersyscall(SB)
  20  	MOVD	a1+8(FP), R0
  21  	MOVD	a2+16(FP), R1
  22  	MOVD	a3+24(FP), R2
  23  	MOVD	$0, R3
  24  	MOVD	$0, R4
  25  	MOVD	$0, R5
  26  	MOVD	trap+0(FP), R8	// syscall entry
  27  	SVC
  28  	MOVD	R0, r1+32(FP)	// r1
  29  	MOVD	R1, r2+40(FP)	// r2
  30  	BL	runtime·exitsyscall(SB)
  31  	RET
  32  
  33  TEXT ·RawSyscall(SB),NOSPLIT,$0-56
  34  	B	syscall·RawSyscall(SB)
  35  
  36  TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
  37  	B	syscall·RawSyscall6(SB)
  38  
  39  TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
  40  	MOVD	a1+8(FP), R0
  41  	MOVD	a2+16(FP), R1
  42  	MOVD	a3+24(FP), R2
  43  	MOVD	$0, R3
  44  	MOVD	$0, R4
  45  	MOVD	$0, R5
  46  	MOVD	trap+0(FP), R8	// syscall entry
  47  	SVC
  48  	MOVD	R0, r1+32(FP)
  49  	MOVD	R1, r2+40(FP)
  50  	RET
  51