Subversion Repositories Kolibri OS

Rev

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

  1. /* ---------------------------------------------- */
  2. /* alloca86.S */
  3.  
  4. .globl alloca
  5.  
  6. alloca:
  7.     pop     %edx
  8.     pop     %eax
  9.     add     $3,%eax
  10.     and     $-4,%eax
  11.     jz      p3
  12.  
  13. #ifdef TCC_TARGET_PE
  14. p1:
  15.     cmp     $4096,%eax
  16.     jbe     p2
  17.     test    %eax,-4096(%esp)
  18.     sub     $4096,%esp
  19.     sub     $4096,%eax
  20.     jmp p1
  21. p2:
  22. #endif
  23.  
  24.     sub     %eax,%esp
  25.     mov     %esp,%eax
  26. p3:
  27.     push    %edx
  28.     push    %edx
  29.     ret
  30.  
  31. /* mark stack as nonexecutable */
  32. #if defined __ELF__ && defined __linux__
  33.     .section    .note.GNU-stack,"",@progbits
  34. #endif
  35. /* ---------------------------------------------- */
  36.