1 //! arm Linux system calls.
3 use crate::imp
::reg
::{ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0}
;
7 pub(in crate::imp
) unsafe fn syscall0_readonly(nr
: SyscallNumber
<'_
>) -> RetReg
<R0
> {
13 options(nostack
, preserves_flags
, readonly
)
19 pub(in crate::imp
) unsafe fn syscall1(nr
: SyscallNumber
<'_
>, a0
: ArgReg
<'_
, A0
>) -> RetReg
<R0
> {
24 inlateout("r0") a0
.to_asm() => r0
,
25 options(nostack
, preserves_flags
)
31 pub(in crate::imp
) unsafe fn syscall1_readonly(
32 nr
: SyscallNumber
<'_
>,
39 inlateout("r0") a0
.to_asm() => r0
,
40 options(nostack
, preserves_flags
, readonly
)
46 pub(in crate::imp
) unsafe fn syscall1_noreturn(nr
: SyscallNumber
<'_
>, a0
: ArgReg
<'_
, A0
>) -> ! {
56 pub(in crate::imp
) unsafe fn syscall2(
57 nr
: SyscallNumber
<'_
>,
65 inlateout("r0") a0
.to_asm() => r0
,
67 options(nostack
, preserves_flags
)
73 pub(in crate::imp
) unsafe fn syscall2_readonly(
74 nr
: SyscallNumber
<'_
>,
82 inlateout("r0") a0
.to_asm() => r0
,
84 options(nostack
, preserves_flags
, readonly
)
90 pub(in crate::imp
) unsafe fn syscall3(
91 nr
: SyscallNumber
<'_
>,
100 inlateout("r0") a0
.to_asm() => r0
,
101 in("r1") a1
.to_asm(),
102 in("r2") a2
.to_asm(),
103 options(nostack
, preserves_flags
)
105 FromAsm
::from_asm(r0
)
109 pub(in crate::imp
) unsafe fn syscall3_readonly(
110 nr
: SyscallNumber
<'_
>,
118 in("r7") nr
.to_asm(),
119 inlateout("r0") a0
.to_asm() => r0
,
120 in("r1") a1
.to_asm(),
121 in("r2") a2
.to_asm(),
122 options(nostack
, preserves_flags
, readonly
)
124 FromAsm
::from_asm(r0
)
128 pub(in crate::imp
) unsafe fn syscall4(
129 nr
: SyscallNumber
<'_
>,
138 in("r7") nr
.to_asm(),
139 inlateout("r0") a0
.to_asm() => r0
,
140 in("r1") a1
.to_asm(),
141 in("r2") a2
.to_asm(),
142 in("r3") a3
.to_asm(),
143 options(nostack
, preserves_flags
)
145 FromAsm
::from_asm(r0
)
149 pub(in crate::imp
) unsafe fn syscall4_readonly(
150 nr
: SyscallNumber
<'_
>,
159 in("r7") nr
.to_asm(),
160 inlateout("r0") a0
.to_asm() => r0
,
161 in("r1") a1
.to_asm(),
162 in("r2") a2
.to_asm(),
163 in("r3") a3
.to_asm(),
164 options(nostack
, preserves_flags
, readonly
)
166 FromAsm
::from_asm(r0
)
170 pub(in crate::imp
) unsafe fn syscall5(
171 nr
: SyscallNumber
<'_
>,
181 in("r7") nr
.to_asm(),
182 inlateout("r0") a0
.to_asm() => r0
,
183 in("r1") a1
.to_asm(),
184 in("r2") a2
.to_asm(),
185 in("r3") a3
.to_asm(),
186 in("r4") a4
.to_asm(),
187 options(nostack
, preserves_flags
)
189 FromAsm
::from_asm(r0
)
193 pub(in crate::imp
) unsafe fn syscall5_readonly(
194 nr
: SyscallNumber
<'_
>,
204 in("r7") nr
.to_asm(),
205 inlateout("r0") a0
.to_asm() => r0
,
206 in("r1") a1
.to_asm(),
207 in("r2") a2
.to_asm(),
208 in("r3") a3
.to_asm(),
209 in("r4") a4
.to_asm(),
210 options(nostack
, preserves_flags
, readonly
)
212 FromAsm
::from_asm(r0
)
216 pub(in crate::imp
) unsafe fn syscall6(
217 nr
: SyscallNumber
<'_
>,
228 in("r7") nr
.to_asm(),
229 inlateout("r0") a0
.to_asm() => r0
,
230 in("r1") a1
.to_asm(),
231 in("r2") a2
.to_asm(),
232 in("r3") a3
.to_asm(),
233 in("r4") a4
.to_asm(),
234 in("r5") a5
.to_asm(),
235 options(nostack
, preserves_flags
)
237 FromAsm
::from_asm(r0
)
241 pub(in crate::imp
) unsafe fn syscall6_readonly(
242 nr
: SyscallNumber
<'_
>,
253 in("r7") nr
.to_asm(),
254 inlateout("r0") a0
.to_asm() => r0
,
255 in("r1") a1
.to_asm(),
256 in("r2") a2
.to_asm(),
257 in("r3") a3
.to_asm(),
258 in("r4") a4
.to_asm(),
259 in("r5") a5
.to_asm(),
260 options(nostack
, preserves_flags
, readonly
)
262 FromAsm
::from_asm(r0
)