macos: bound_alloca symbol adjust
[tinycc.git] / lib / alloca86_64-bt.S
blob34ab0e7770d66540faf9e03455da84e861c2f22d
1 /* ---------------------------------------------- */
2 /* alloca86_64.S */
4 #ifdef __APPLE__
5 #define __bound_alloca ___bound_alloca
6 #define __bound_alloca_nr ___bound_alloca_nr
7 #endif
9 .globl __bound_alloca
10 __bound_alloca:
12 #ifdef _WIN32
13     inc %rcx            # add one extra to separate regions
14     jmp alloca
15 .globl __bound_alloca_nr
16 __bound_alloca_nr:
17     dec     %rcx
18     push    %rax
19     mov     %rcx,%rdx
20     mov     %rax,%rcx
21     sub     $32,%rsp
22     call    __bound_new_region
23     add     $32,%rsp
24     pop     %rax
25     ret
26 #else
27     pop     %rdx
28     mov     %rdi,%rax
29     mov     %rax,%rsi   # size, a second parm to the __bound_new_region
31     add     $15 + 1,%rax  # add one extra to separate regions
32     and     $-16,%rax
33     jz      p3
36     sub     %rax,%rsp
37     mov     %rsp,%rdi   # pointer, a first parm to the __bound_new_region
38     mov     %rsp,%rax
40     push    %rdx
41     push    %rax
42     call   __bound_new_region
43     pop     %rax
44     pop     %rdx
46 p3:
47     push    %rdx
48     ret
49 #endif
51 /* ---------------------------------------------- */