Subversion Repositories Kolibri OS

Rev

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

  1. /* ---------------------------------------------- */
  2. /* alloca86-bt.S */
  3.  
  4. .globl __bound_alloca
  5.  
  6. __bound_alloca:
  7.     pop     %edx
  8.     pop     %eax
  9.     mov     %eax, %ecx
  10.     add     $3,%eax
  11.     and     $-4,%eax
  12.     jz      p6
  13.  
  14. #ifdef TCC_TARGET_PE
  15. p4:
  16.     cmp     $4096,%eax
  17.     jbe     p5
  18.     test    %eax,-4096(%esp)
  19.     sub     $4096,%esp
  20.     sub     $4096,%eax
  21.     jmp p4
  22.  
  23. p5:
  24. #endif
  25.  
  26.     sub     %eax,%esp
  27.     mov     %esp,%eax
  28.  
  29.     push    %edx
  30.     push    %eax
  31.     push    %ecx
  32.     push    %eax
  33.     call   __bound_new_region
  34.     add    $8, %esp
  35.     pop     %eax
  36.     pop     %edx
  37.  
  38. p6:
  39.     push    %edx
  40.     push    %edx
  41.     ret
  42.  
  43. /* mark stack as nonexecutable */
  44. #if defined __ELF__ && defined __linux__
  45.     .section    .note.GNU-stack,"",@progbits
  46. #endif
  47. /* ---------------------------------------------- */
  48.