From 4e4e7fa9122ffbe7ab3612dce8d28d47441ce53a Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 14 May 2014 18:22:18 -0700 Subject: [PATCH] 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 --- third_party/x86inc/x86inc.asm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/third_party/x86inc/x86inc.asm b/third_party/x86inc/x86inc.asm index 5b22b94d6..213467662 100644 --- a/third_party/x86inc/x86inc.asm +++ b/third_party/x86inc/x86inc.asm @@ -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 -- 2.40.0