syscall.s 838 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. .hidden __sysinfo
  2. .global __vsyscall
  3. .type __vsyscall,@function
  4. __vsyscall:
  5. push %edi
  6. push %ebx
  7. mov %edx,%ebx
  8. mov %edi,%edx
  9. mov 12(%esp),%edi
  10. push %eax
  11. call 1f
  12. 2: pop %ebx
  13. pop %ebx
  14. pop %edi
  15. ret
  16. 1: mov (%esp),%eax
  17. add $[__sysinfo-2b],%eax
  18. mov (%eax),%eax
  19. test %eax,%eax
  20. jz 1f
  21. push %eax
  22. mov 8(%esp),%eax
  23. ret
  24. 1: mov 4(%esp),%eax
  25. int $128
  26. ret
  27. .global __vsyscall6
  28. .type __vsyscall6,@function
  29. __vsyscall6:
  30. push %ebp
  31. push %eax
  32. mov 12(%esp), %ebp
  33. mov (%ebp), %eax
  34. mov 4(%ebp), %ebp
  35. push %eax
  36. mov 4(%esp),%eax
  37. call __vsyscall
  38. pop %ebp
  39. pop %ebp
  40. pop %ebp
  41. ret
  42. .global __syscall
  43. .type __syscall,@function
  44. __syscall:
  45. lea 24(%esp),%eax
  46. push %esi
  47. push %edi
  48. push %eax
  49. mov 16(%esp),%eax
  50. mov 20(%esp),%edx
  51. mov 24(%esp),%ecx
  52. mov 28(%esp),%edi
  53. mov 32(%esp),%esi
  54. call __vsyscall6
  55. pop %edi
  56. pop %edi
  57. pop %esi
  58. ret