aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Enberg <penberg@kernel.org>2012-01-13 17:28:17 +0200
committerPekka Enberg <penberg@kernel.org>2012-01-13 17:28:17 +0200
commite6550c2d844797ffeb08e90bf9f4606dd654a5a6 (patch)
tree3003e26fc89bddfafd90a3f6c9edb1b065d69db8
parent02b74cfc656c21563dccd564d66097dd7a939c85 (diff)
downloadjato-e6550c2d844797ffeb08e90bf9f4606dd654a5a6.tar.gz
x86-64: Fix stack frame size in generated prolog
Same as commit 02b74cf ("x86-32: Fix stack frame size in generated prolog") but for 64-bit x86. Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r--arch/x86/emit-code.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/x86/emit-code.c b/arch/x86/emit-code.c
index c56cbfea..34107add 100644
--- a/arch/x86/emit-code.c
+++ b/arch/x86/emit-code.c
@@ -1958,7 +1958,7 @@ static void __emit64_pop_xmm(struct buffer *buf, enum machine_reg reg)
}
void emit_prolog(struct buffer *buf, struct stack_frame *frame,
- unsigned long nr_locals)
+ unsigned long frame_size)
{
__emit_push_reg(buf, MACH_REG_RBP);
__emit_mov_reg_reg(buf, MACH_REG_RSP, MACH_REG_RBP);
@@ -1969,10 +1969,8 @@ void emit_prolog(struct buffer *buf, struct stack_frame *frame,
* emit(buf, 0xFC);
*/
- if (nr_locals)
- __emit64_sub_imm_reg(buf,
- nr_locals * sizeof(unsigned long),
- MACH_REG_RSP);
+ if (frame_size)
+ __emit64_sub_imm_reg(buf, frame_size, MACH_REG_RSP);
__emit_push_reg(buf, MACH_REG_RBX);
__emit_push_reg(buf, MACH_REG_R12);