Commit 70da0762f7
Changed files (1)
std
os
linux
std/os/linux/riscv64.zig
@@ -1,95 +1,62 @@
pub fn syscall0(number: usize) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number)
: "memory"
);
}
pub fn syscall1(number: usize, arg1: usize) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ mv a0, %[arg1]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number),
- [arg1] "r" (arg1)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number),
+ [arg1] "{x10}" (arg1)
: "memory"
);
}
pub fn syscall2(number: usize, arg1: usize, arg2: usize) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ mv a0, %[arg1]
- \\ mv a1, %[arg2]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number),
- [arg1] "r" (arg1),
- [arg2] "r" (arg2)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number),
+ [arg1] "{x10}" (arg1),
+ [arg2] "{x11}" (arg2)
: "memory"
);
}
pub fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ mv a0, %[arg1]
- \\ mv a1, %[arg2]
- \\ mv a2, %[arg3]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number),
- [arg1] "r" (arg1),
- [arg2] "r" (arg2),
- [arg3] "r" (arg3)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number),
+ [arg1] "{x10}" (arg1),
+ [arg2] "{x11}" (arg2),
+ [arg3] "{x12}" (arg3)
: "memory"
);
}
pub fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ mv a0, %[arg1]
- \\ mv a1, %[arg2]
- \\ mv a2, %[arg3]
- \\ mv a3, %[arg4]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number),
- [arg1] "r" (arg1),
- [arg2] "r" (arg2),
- [arg3] "r" (arg3),
- [arg4] "r" (arg4)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number),
+ [arg1] "{x10}" (arg1),
+ [arg2] "{x11}" (arg2),
+ [arg3] "{x12}" (arg3),
+ [arg4] "{x13}" (arg4)
: "memory"
);
}
pub fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ mv a0, %[arg1]
- \\ mv a1, %[arg2]
- \\ mv a2, %[arg3]
- \\ mv a3, %[arg4]
- \\ mv a4, %[arg5]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number),
- [arg1] "r" (arg1),
- [arg2] "r" (arg2),
- [arg3] "r" (arg3),
- [arg4] "r" (arg4),
- [arg5] "r" (arg5)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number),
+ [arg1] "{x10}" (arg1),
+ [arg2] "{x11}" (arg2),
+ [arg3] "{x12}" (arg3),
+ [arg4] "{x13}" (arg4),
+ [arg5] "{x14}" (arg5)
: "memory"
);
}
@@ -103,24 +70,15 @@ pub fn syscall6(
arg5: usize,
arg6: usize,
) usize {
- return asm volatile (
- \\ mv a7, %[number]
- \\ mv a0, %[arg1]
- \\ mv a1, %[arg2]
- \\ mv a2, %[arg3]
- \\ mv a3, %[arg4]
- \\ mv a4, %[arg5]
- \\ mv a5, %[arg6]
- \\ ecall
- \\ mv %[ret], a0
- : [ret] "=r" (-> usize)
- : [number] "r" (number),
- [arg1] "r" (arg1),
- [arg2] "r" (arg2),
- [arg3] "r" (arg3),
- [arg4] "r" (arg4),
- [arg5] "r" (arg5),
- [arg6] "r" (arg6)
+ return asm volatile ("ecall"
+ : [ret] "={x10}" (-> usize)
+ : [number] "{x17}" (number),
+ [arg1] "{x10}" (arg1),
+ [arg2] "{x11}" (arg2),
+ [arg3] "{x12}" (arg3),
+ [arg4] "{x13}" (arg4),
+ [arg5] "{x14}" (arg5),
+ [arg6] "{x15}" (arg6)
: "memory"
);
}