Make x86inc support local variable array

This commit modifies the x86inc to allow explicit local buffer
allocation and the corresponding stack pointer adjustment.

Change-Id: I3cb2174e0242b5869a4ba0ca0cd240ee066836c3
This commit is contained in:
Jingning Han
2014-05-14 18:22:18 -07:00
parent 806fa6aaca
commit 4e4e7fa912

View File

@@ -395,6 +395,23 @@ DECLARE_REG_TMP_SIZE 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
%assign n_arg_names %0
%endmacro
%if ARCH_X86_64
%macro ALLOC_STACK 2 ; stack_size, num_regs
%assign %%stack_aligment ((mmsize + 15) & ~15)
%assign stack_size_padded %1
%assign %%reg_num (%2 - 1)
%xdefine rsp_tmp r %+ %%reg_num
mov rsp_tmp, rsp
sub rsp, stack_size_padded
and rsp, ~(%%stack_aligment - 1)
%endmacro
%macro RESTORE_STACK 0 ; reset rsp register
mov rsp, rsp_tmp
%endmacro
%endif
%if WIN64 ; Windows x64 ;=================================================
DECLARE_REG 0, rcx, ecx, cx, cl