Files
zing/user/arch/riscv64.zig
T

23 lines
655 B
Zig

const abi = @import("abi");
pub const syscall = struct {
pub fn syscall1(func: abi.SyscallNumber, arg0: usize) usize {
return asm volatile ("ecall"
: [result] "={a0}" (-> usize),
: [func] "{a0}" (@intFromEnum(func)),
[arg0] "{a1}" (arg0),
: "memory"
);
}
pub fn syscall2(func: abi.SyscallNumber, arg0: usize, arg1: usize) usize {
return asm volatile ("ecall"
: [result] "={a0}" (-> usize),
: [func] "{a0}" (@intFromEnum(func)),
[arg0] "{a1}" (arg0),
[arg1] "{a2}" (arg1),
: "memory"
);
}
};