unified_syscall_i386.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #undef _syscall0
  2. #undef _syscall1
  3. #undef _syscall2
  4. #undef _syscall3
  5. #undef _syscall4
  6. #undef _syscall5
  7. #include "str_syscalls.h"
  8. /*
  9. * Disable the following for now... it only saved space if no other
  10. * syscalls but _exit were used, and no longer works (__uClibc_main).
  11. */
  12. #if 0
  13. #undef uClibc_syscall_exit
  14. #define uClibc_syscall_exit(type,name,type1,arg1) \
  15. __asm__ ( \
  16. ".text\n.align 4\n.global "###name"\n.type "###name",@function\n" \
  17. #name":;\npushl %ebp;\n" \
  18. "movl %esp,%ebp;\nsubl $4,%esp;\npushl %ebx;\nmovl 8(%ebp),%ebx;\n" \
  19. "jmp _start_exit\n.Lfe1"###name":\n.size "###name",.Lfe1"###name"-"###name \
  20. )
  21. #endif
  22. #define unified_syscall_body(name) \
  23. __asm__ ( \
  24. ".text\n.align 4\n.global "###name"\n.type "###name",@function\n" \
  25. #name":\nmovb $"__STR_NR_##name \
  26. ",%al;\n jmp __uClibc_syscall\n.Lfe1"###name":\n.size "###name \
  27. ",.Lfe1"###name"-"###name \
  28. )
  29. #define _syscall0(type,name) \
  30. unified_syscall_body(name)
  31. #define _syscall1(type,name,type1,arg1) \
  32. unified_syscall_body(name)
  33. #define _syscall2(type,name,type1,arg1,type2,arg2) \
  34. unified_syscall_body(name)
  35. #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
  36. unified_syscall_body(name)
  37. #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
  38. unified_syscall_body(name)
  39. #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
  40. unified_syscall_body(name)