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