From 8ea8305199496ba29b6d0da2de07aea4441844aa Mon Sep 17 00:00:00 2001 From: Shinichiro Hamaji Date: Tue, 9 Jun 2009 03:23:08 +0900 Subject: x86-64: Add alloca. --- lib/alloca86_64.S | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lib/alloca86_64.S (limited to 'lib/alloca86_64.S') diff --git a/lib/alloca86_64.S b/lib/alloca86_64.S new file mode 100644 index 0000000..1751d37 --- /dev/null +++ b/lib/alloca86_64.S @@ -0,0 +1,33 @@ +/* ---------------------------------------------- */ +/* alloca86_64.S */ + +#include "../config.h" + +.globl alloca + +alloca: + pop %rdx + mov %rdi,%rax + add $3,%rax + and $-4,%rax + jz p3 + +#ifdef TCC_TARGET_PE + /* XXX: not tested */ +p1: + cmp $4096,%rax + jle p2 + sub $4096,%rsp + sub $4096,%rax + test %rax,(%rsp) + jmp p1 +p2: +#endif + + sub %rax,%rsp + mov %rsp,%rax +p3: + push %rdx + ret + +/* ---------------------------------------------- */ -- cgit v1.3.1