123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #ifndef __GBLIBC_SYSCALL_H_
- #define __GBLIBC_SYSCALL_H_
- #include <stdint.h>
- #define SYS_exit (0x01)
- #define SYS_fork (0x02)
- #define SYS_read (0x03)
- #define SYS_write (0x04)
- #define SYS_open (0x05)
- #define SYS_close (0x06)
- #define SYS_waitpid (0x07)
- #define SYS_execve (0x0b)
- #define SYS_chdir (0x0c)
- #define SYS_getpid (0x14)
- #define SYS_dup (0x29)
- #define SYS_pipe (0x2a)
- #define SYS_ioctl (0x36)
- #define SYS_setpgid (0x39)
- #define SYS_dup2 (0x3f)
- #define SYS_getppid (0x40)
- #define SYS_setsid (0x42)
- #define SYS_getdents (0x84)
- #define SYS_writev (0x92)
- #define SYS_getsid (0x93)
- #define SYS_getcwd (0xb7)
- #define SYS_set_thread_area (0xf3)
- #define SYS_exit_group (0xfc)
- #define SYS_set_tid_address (0x102)
- #ifdef __cplusplus
- extern "C" {
- #endif
- static 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, %%ebx\n"
- "movl %2, %%eax\n"
- "int $0x80\n"
- "movl %%eax, %0"
- : "=g"(no)
- : "g"(arg), "g"(no)
- : "eax", "ebx");
- return no;
- }
- static inline uint32_t syscall2(uint32_t no, uint32_t arg1, uint32_t arg2)
- {
- asm volatile(
- "movl %1, %%ebx\n"
- "movl %2, %%ecx\n"
- "movl %3, %%eax\n"
- "int $0x80\n"
- "movl %%eax, %0"
- : "=g"(no)
- : "g"(arg1), "g"(arg2), "g"(no)
- : "eax", "ebx", "ecx");
- return no;
- }
- static inline uint32_t syscall3(uint32_t no, uint32_t arg1, uint32_t arg2, uint32_t arg3)
- {
- asm volatile(
- "movl %1, %%ebx\n"
- "movl %2, %%ecx\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", "ebx", "ecx", "edx");
- return no;
- }
- #ifdef __cplusplus
- }
- #endif
- #endif
|