#include intptr_t __syscall0(uintptr_t id) { intptr_t ret = 0; asm volatile("mov %1, %%rax; syscall; mov %%rax, %0" : "=m" (ret) : "m" (id)); return ret; } intptr_t __syscall1(uintptr_t id, uintptr_t p0) { intptr_t ret = 0; asm volatile( "mov %1, %%rax;" "mov %2, %%rdi;" "syscall;" "mov %%rax, %0" : "=m" (ret) : "m" (id), "m" (p0)); return ret; } intptr_t __syscall2(uintptr_t id, uintptr_t p0, uintptr_t p1) { intptr_t ret = 0; asm volatile( "mov %1, %%rax;" "mov %2, %%rdi;" "mov %3, %%rsi;" "syscall;" "mov %%rax, %0" : "=m" (ret) : "m" (id), "m" (p0), "m" (p1)); return ret; } intptr_t __syscall3(uintptr_t id, uintptr_t p0, uintptr_t p1, uintptr_t p2) { intptr_t ret = 0; asm volatile( "movq %1, %%rax;" "mov %2, %%rdi;" "mov %3, %%rsi;" "mov %4, %%rdx;" "syscall;" "mov %%rax, %0" : "=m" (ret) : "m" (id), "m" (p0), "m" (p1), "m" (p2)); return ret; } intptr_t __syscall4(uintptr_t id, uintptr_t p0, uintptr_t p1, uintptr_t p2, uintptr_t p3) { intptr_t ret = 0; asm volatile( "mov %1, %%rax;" "mov %2, %%rdi;" "mov %3, %%rsi;" "mov %4, %%rdx;" "mov %5, %%r10;" "syscall;" "mov %%rax, %0" : "=m" (ret) : "m" (id), "m" (p0), "m" (p1), "m" (p2), "m" (p3)); return ret; } intptr_t __syscall5(uintptr_t id, uintptr_t p0, uintptr_t p1, uintptr_t p2, uintptr_t p3, uintptr_t p4) { intptr_t ret = 0; asm volatile( "mov %1, %%rax;" "mov %2, %%rdi;" "mov %3, %%rsi;" "mov %4, %%rdx;" "mov %5, %%r10;" "mov %6, %%r8;" "syscall;" "mov %%rax, %0" : "=m" (ret) : "m" (id), "m" (p0), "m" (p1), "m" (p2), "m" (p3), "m" (p4)); return ret; } intptr_t __syscall6(uintptr_t id, uintptr_t p0, uintptr_t p1, uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5) { intptr_t ret = 0; asm volatile( "mov %1, %%rax;" "mov %2, %%rdi;" "mov %3, %%rsi;" "mov %4, %%rdx;" "mov %5, %%r10;" "mov %6, %%r8;" "mov %7, %%r9;" "syscall;" "mov %%rax, %0" : "=m" (ret) : "m" (id), "m" (p0), "m" (p1), "m" (p2), "m" (p3), "m" (p4), "m" (p5)); return ret; }