#include #if defined(__x86_64__) void exit(int8_t status) { asm volatile( "syscall" : : "a"(60), "D"(status) : ); } intptr_t write(int32_t fd, const void* buf, intptr_t size) { intptr_t n_written = 0; asm volatile ( "syscall\n" "movq %0, %%rax\n" : "=r"(n_written) : "a"(1), "D"(fd), "S"(buf), "d"(size) // RDI, RSI, RDX are used in x86-64 for write args : "rcx", "r11", "memory" ); return n_written; } uint32_t fork() { uint64_t rtn; asm volatile( "syscall\n" // syscall "movq %0, %%rax\n" // save return value : "=r"(rtn) : "a"(57) : ); return (uint32_t)rtn; } #endif /* ifdef __x86_64__ */