1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#![feature(asm)]

#[cfg(target_arch = "x86_64")]
pub fn system_call(number : usize, _1 : usize, _2 : usize, _3 : usize, _4 : usize, _5 : usize, _6 : usize) -> usize {
    let mut return_value;

    unsafe {
        asm!("syscall"
           : "={rax}" (return_value)
           : "{rax}" (number), "{rdi}" (_1), "{rsi}" (_2), "{rdx}" (_3), "{r10}" (_4), "{r8}" (_5), "{r9}" (_6)
           : "rcx", "r8", "r9", "r10" "r11", "cc", "memory"
           : "volatile"
           );
    }

    return_value
}