| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | #ifndef __GBLIBC_SYSCALL_H_#define __GBLIBC_SYSCALL_H_#include <stdint.h>#define SYS_fork (0x00)#define SYS_write (0x01)#define SYS_sleep (0x02)#define SYS_chdir (0x03)#define SYS_exec (0x04)#define SYS_exit (0x05)#define SYS_wait (0x06)#define SYS_read (0x07)#define SYS_getdents (0x08)#define SYS_open (0x09)#define SYS_getcwd (0x0a)#ifdef __cplusplusextern "C" {#endifstatic inline uint32_t syscall0(uint32_t no){    asm volatile(        "movl %1, %%eax\n"        "int $0x80\n"        "movl %%eax, %0"        : "=g"(no)        : "g"(no)        : "eax");    return no;}static inline uint32_t syscall1(uint32_t no, uint32_t arg){    asm volatile(        "movl %1, %%edi\n"        "movl %2, %%eax\n"        "int $0x80\n"        "movl %%eax, %0"        : "=g"(no)        : "g"(arg), "g"(no)        : "eax", "edi");    return no;}static inline uint32_t syscall2(uint32_t no, uint32_t arg1, uint32_t arg2){    asm volatile(        "movl %1, %%edi\n"        "movl %2, %%esi\n"        "movl %3, %%eax\n"        "int $0x80\n"        "movl %%eax, %0"        : "=g"(no)        : "g"(arg1), "g"(arg2), "g"(no)        : "eax", "edi", "esi");    return no;}static inline uint32_t syscall3(uint32_t no, uint32_t arg1, uint32_t arg2, uint32_t arg3){    asm volatile(        "movl %1, %%edi\n"        "movl %2, %%esi\n"        "movl %3, %%edx\n"        "movl %4, %%eax\n"        "int $0x80\n"        "movl %%eax, %0"        : "=g"(no)        : "g"(arg1), "g"(arg2), "g"(arg3), "g"(no)        : "eax", "edx", "edi", "esi");    return no;}#ifdef __cplusplus}#endif#endif
 |