#ifndef JOVE_ABI_SYSCALL_H #define JOVE_ABI_SYSCALL_H 1 typedef struct syscall { int id; } syscall_t; struct syscall_log { syscall_t syscall; const char *message; }; enum { SYSCALL_LOG = 0, SYSCALL_COUNT }; #define _SYSCALL(data) __asm__ volatile("movq %0, %%rdi\nsyscall":: "r"(data)) void _syscall_log(const char *message) { struct syscall_log syscall_data = { .syscall = (syscall_t){ .id = SYSCALL_LOG }, .message = message }; _SYSCALL(&syscall_data); } #endif