]> Cypherpunks.ru repositories - gostls13.git/blob - src/syscall/asm_netbsd_arm64.s
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / src / syscall / asm_netbsd_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 //
8 // System call support for ARM64, NetBSD
9 //
10
11 #define SYS_syscall     0
12
13 // func Syscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
14 TEXT    ·Syscall(SB),NOSPLIT,$0-56
15         BL      runtime·entersyscall<ABIInternal>(SB)
16         MOVD    trap+0(FP), R17
17         MOVD    a1+8(FP), R0
18         MOVD    a2+16(FP), R1
19         MOVD    a3+24(FP), R2
20         SVC     $SYS_syscall
21         BCC     ok
22         MOVD    $-1, R1
23         MOVD    R1, r1+32(FP)   // r1
24         MOVD    ZR, r2+40(FP)   // r2
25         MOVD    R0, err+48(FP)  // err
26         BL      runtime·exitsyscall<ABIInternal>(SB)
27         RET
28 ok:
29         MOVD    R0, r1+32(FP) // r1
30         MOVD    R1, r2+40(FP)   // r2
31         MOVD    ZR, err+48(FP)  // err
32         BL      runtime·exitsyscall<ABIInternal>(SB)
33         RET
34
35 // func RawSyscall(trap uintptr, a1, a2, a3 uintptr) (r1, r2, err uintptr)
36 TEXT ·RawSyscall(SB),NOSPLIT,$0-56
37         MOVD    trap+0(FP), R17 // syscall entry
38         MOVD    a1+8(FP), R0
39         MOVD    a2+16(FP), R1
40         MOVD    a3+24(FP), R2
41         SVC     $SYS_syscall
42         BCC     ok
43         MOVD    $-1, R1
44         MOVD    R1, r1+32(FP)   // r1
45         MOVD    ZR, r2+40(FP)   // r2
46         MOVD    R0, err+48(FP)  // err
47         RET
48 ok:
49         MOVD    R0, r1+32(FP) // r1
50         MOVD    R1, r2+40(FP)   // r2
51         MOVD    ZR, err+48(FP)  // err
52         RET
53
54 // func Syscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
55 TEXT    ·Syscall6(SB),NOSPLIT,$0-80
56         BL      runtime·entersyscall<ABIInternal>(SB)
57         MOVD    trap+0(FP), R17 // syscall entry
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         SVC     $SYS_syscall
65         BCC     ok
66         MOVD    $-1, R1
67         MOVD    R1, r1+56(FP)   // r1
68         MOVD    ZR, r2+64(FP)   // r2
69         MOVD    R0, err+72(FP)  // err
70         BL      runtime·exitsyscall<ABIInternal>(SB)
71         RET
72 ok:
73         MOVD    R0, r1+56(FP) // r1
74         MOVD    R1, r2+64(FP)   // r2
75         MOVD    ZR, err+72(FP)  // err
76         BL      runtime·exitsyscall<ABIInternal>(SB)
77         RET
78
79 // func RawSyscall6(trap uintptr, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
80 TEXT    ·RawSyscall6(SB),NOSPLIT,$0-80
81         MOVD    trap+0(FP), R17 // syscall entry
82         MOVD    a1+8(FP), R0
83         MOVD    a2+16(FP), R1
84         MOVD    a3+24(FP), R2
85         MOVD    a4+32(FP), R3
86         MOVD    a5+40(FP), R4
87         MOVD    a6+48(FP), R5
88         SVC     $SYS_syscall
89         BCC     ok
90         MOVD    $-1, R1
91         MOVD    R1, r1+56(FP)   // r1
92         MOVD    ZR, r2+64(FP)   // r2
93         MOVD    R0, err+72(FP)  // err
94         RET
95 ok:
96         MOVD    R0, r1+56(FP) // r1
97         MOVD    R1, r2+64(FP)   // r2
98         MOVD    ZR, R0
99         MOVD    R0, err+72(FP)  // err
100         RET
101
102 // Actually Syscall7
103 TEXT    ·Syscall9(SB),NOSPLIT,$0-104
104         BL      runtime·entersyscall<ABIInternal>(SB)
105         MOVD    num+0(FP), R17  // syscall entry
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    a7+56(FP), R6
113         //MOVD  a8+64(FP), R7
114         //MOVD  a9+72(FP), R8
115         SVC     $SYS_syscall
116         BCC     ok
117         MOVD    $-1, R1
118         MOVD    R1, r1+80(FP)   // r1
119         MOVD    ZR, r2+88(FP)   // r2
120         MOVD    R0, err+96(FP)  // err
121         BL      runtime·exitsyscall<ABIInternal>(SB)
122         RET
123 ok:
124         MOVD    R0, r1+80(FP) // r1
125         MOVD    R1, r2+88(FP)   // r2
126         MOVD    ZR, err+96(FP)  // err
127         BL      runtime·exitsyscall<ABIInternal>(SB)
128         RET