https://bitbucket.org/daniel_fort/magic-lantern
Raw File
Tip revision: 153b0988c9d970c20349f067f5397d43fd6394f2 authored by g3gg0 on 01 March 2014, 21:24:40 UTC
some module updated for module unloading support
Tip revision: 153b098
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