https://bitbucket.org/daniel_fort/magic-lantern
Raw File
Tip revision: f440d7e9213a576f53f1c23c650ba1f64e841d67 authored by a1ex on 19 June 2016, 18:38:36 UTC
Close branch take-a-pic-trigger-fix.
Tip revision: f440d7e
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