asm_linux_arm64.s 1.1 KB

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