Support struct arguments with stdarg.h
[tinycc.git] / lib / alloca86-bt.S
blob76a85a0f7bed6d00143a2aeeb9b16e1d2bc1f2fb
1 /* ---------------------------------------------- */
2 /* alloca86-bt.S */
4 .globl __bound_alloca
6 __bound_alloca:
7     pop     %edx
8     pop     %eax
9     mov     %eax, %ecx
10     add     $3,%eax
11     and     $-4,%eax
12     jz      p6
14 #ifdef TCC_TARGET_PE
15 p4:
16     cmp     $4096,%eax
17     jle     p5
18     sub     $4096,%esp
19     sub     $4096,%eax
20     test    %eax,(%esp)
21     jmp p4
23 p5:
24 #endif
26     sub     %eax,%esp
27     mov     %esp,%eax
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
38 p6:
39     push    %edx
40     push    %edx
41     ret
43 /* ---------------------------------------------- */