diff options
| author | grischka <grischka> | 2009-04-18 14:28:45 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2009-04-18 15:08:03 +0200 |
| commit | ea5e81bd6a3376232bf4747b2fa2e0a91c19b337 (patch) | |
| tree | f88b43a25996cd7f4b9c32aac70fdd33e3f4dc2c /lib/alloca86-bt.S | |
| parent | e8a52a824957808410a8eb13d4b5e2f3e1776553 (diff) | |
| download | tinycc-ea5e81bd6a3376232bf4747b2fa2e0a91c19b337.tar.gz tinycc-ea5e81bd6a3376232bf4747b2fa2e0a91c19b337.tar.bz2 | |
new subdirs: include, lib, tests
Diffstat (limited to 'lib/alloca86-bt.S')
| -rw-r--r-- | lib/alloca86-bt.S | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/alloca86-bt.S b/lib/alloca86-bt.S new file mode 100644 index 0000000..3fa8a53 --- /dev/null +++ b/lib/alloca86-bt.S @@ -0,0 +1,45 @@ +/* ---------------------------------------------- */ +/* alloca86b.S */ + +#include "config.h" + +.globl __bound__alloca + +__bound__alloca: + pop %edx + pop %eax + mov %eax, %ecx + add $3,%eax + and $-4,%eax + jz p6 + +#ifdef TCC_TARGET_PE +p4: + cmp $4096,%eax + jle p5 + sub $4096,%esp + sub $4096,%eax + test %eax,(%esp) + jmp p4 + +p5: +#endif + + sub %eax,%esp + mov %esp,%eax + + push %edx + push %eax + push %ecx + push %eax + call __bound_new_region + add $8, %esp + pop %eax + pop %edx + +p6: + push %edx + push %edx + ret + +/* ---------------------------------------------- */ |
