syscall-template-i386-freebsd-2.0.S
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #include <sys/syscall.h>
  2. #ifdef __STDC__
  3. #define SYS(X) SYS_##X
  4. #ifdef __ELF__
  5. #define NAME(X) machdep_sys_##X
  6. #else
  7. #define NAME(X) _machdep_sys_##X
  8. #endif
  9. #else
  10. #define SYS(X) SYS_/**/X
  11. #ifdef __ELF__
  12. #define NAME(X) machdep_sys_/**/X
  13. #else
  14. #define NAME(X) _machdep_sys_/**/X
  15. #endif
  16. #endif
  17. #ifdef __ELF__
  18. #define END(X) 5: ; .type NAME(X),@function ; .size NAME(X),5b - NAME(X)
  19. #define KERNCALL int $0x80
  20. #else
  21. #define END(X)
  22. #define KERNCALL .byte 0x9a; .long 0; .word 7;
  23. #endif
  24. #define SYSCALL(x)
  25. .globl NAME(x);
  26. NAME(x):;
  27. movl $(SYS(x)), %eax;
  28. KERNCALL;
  29. jb 1b;
  30. ret;
  31. END(x)
  32. /*
  33.  * Initial asm stuff for all functions.
  34.  */
  35. .text
  36. .align 2
  37. /* ==========================================================================
  38.  * error code for all syscalls. The error value is returned as the negative
  39.  * of the errno value.
  40.  */
  41. 1:
  42. neg %eax
  43. ret
  44. #define XSYSCALL(NAME) SYSCALL(NAME)
  45. XSYSCALL(SYSCALL_NAME)