#include uint64_t syscall(uint64_t num, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6) { uint64_t ret = 0; asm volatile ( "mov %[SYSNUM], %%rax\n" "mov %[ARG1], %%rdi\n" "mov %[ARG2], %%rsi\n" "mov %[ARG3], %%rdx\n" "mov %[ARG4], %%r10\n" "mov %[ARG5], %%r8\n" "mov %[ARG6], %%r9\n" "int $0x80\n" "mov %%rax, %[RESULT]\n" : [RESULT]"=r"(ret) : [SYSNUM]"r"(num), [ARG1]"r"(arg1), [ARG2]"r"(arg2), [ARG3]"r"(arg3), [ARG4]"r"(arg4), [ARG5]"r"(arg5), [ARG6]"r"(arg6) : "rax", "rdi", "rsi", "rdx", "r10", "r8", "r9", "memory" ); return ret; }