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