Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
  2. #ifndef __dj_include_libc_asmdefs_h__
  3. #define __dj_include_libc_asmdefs_h__
  4.  
  5.         .file   __BASE_FILE__
  6.  
  7. #ifdef USE_EBX
  8. #define PUSHL_EBX       pushl %ebx;
  9. #define POPL_EBX        popl %ebx;
  10. #else
  11. #define PUSHL_EBX      
  12. #define POPL_EBX       
  13. #endif
  14.  
  15. #ifdef USE_ESI
  16. #define PUSHL_ESI       pushl %esi;
  17. #define POPL_ESI        popl %esi;
  18. #else
  19. #define PUSHL_ESI      
  20. #define POPL_ESI       
  21. #endif
  22.  
  23. #ifdef USE_EDI
  24. #define PUSHL_EDI       pushl %edi;
  25. #define POPL_EDI        popl %edi;
  26. #else
  27. #define PUSHL_EDI      
  28. #define POPL_EDI       
  29. #endif
  30.  
  31. #define FUNC(x)         .globl x; \
  32. x:
  33.  
  34. #define ENTER           pushl %ebp; movl %esp,%ebp; PUSHL_EBX PUSHL_ESI PUSHL_EDI
  35.  
  36. #define LEAVE           L_leave: POPL_EDI POPL_ESI POPL_EBX movl %ebp,%esp; popl %ebp; ret
  37. #define LEAVEP(x)       L_leave: x; POPL_EDI POPL_ESI POPL_EBX movl %ebp,%esp; popl %ebp; ret
  38.  
  39. #define RET             jmp L_leave
  40.  
  41. #define ARG1            8(%ebp)
  42. #define ARG1h           10(%ebp)
  43. #define ARG2            12(%ebp)
  44. #define ARG2h           14(%ebp)
  45. #define ARG3            16(%ebp)
  46. #define ARG4            20(%ebp)
  47. #define ARG5            24(%ebp)
  48. #define ARG6            28(%ebp)
  49. #define ARG7            32(%ebp)
  50. #define ARG8            36(%ebp)
  51.  
  52. #endif /* __dj_include_libc_asmdefs_h__ */
  53.