https://bitbucket.org/daniel_fort/magic-lantern
Raw File
Tip revision: 50a08bc573be0591cf4fa03e129a5e7f7c07619e authored by Daniel Fort on 20 September 2017, 14:10:06 UTC
Closed branch crop_rec_4k_lossless_frsp_tests
Tip revision: 50a08bc
alloca86_64.S
/* ---------------------------------------------- */
/* alloca86_64.S */

.globl alloca

alloca:
    pop     %rdx
#ifdef TCC_TARGET_PE
    mov     %rcx,%rax
#else
    mov     %rdi,%rax
#endif
    add     $15,%rax
    and     $-16,%rax
    jz      p3

#ifdef TCC_TARGET_PE
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
#ifdef TCC_TARGET_PE
    add     $32,%rax
#endif

p3:
    push    %rdx
    ret

/* mark stack as nonexecutable */
#if defined __ELF__ && defined __linux__
    .section    .note.GNU-stack,"",@progbits
#endif
/* ---------------------------------------------- */
back to top