diff options
author | Pekka Enberg <penberg@kernel.org> | 2012-02-15 17:07:13 +0200 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2012-02-15 17:07:13 +0200 |
commit | 28e743b56baf43b1a4974f0aff3a5f34b69f7def (patch) | |
tree | c23883daaac50eb31038fc4342a1f358df50e4d1 | |
parent | 87c7df52226d56d7b0e25c2ffc89195cac6ec4a6 (diff) | |
download | jato-28e743b56baf43b1a4974f0aff3a5f34b69f7def.tar.gz |
Revert "x86-32: Fix stack pointer alignment with -Xdebug:stack"
This reverts commit 12c4f26ce3316e114e9b7949a2eee06954734d93. It breaks
EntryTest when -Xdebug:stack is enabled.
-rw-r--r-- | arch/x86/emit_32.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/x86/emit_32.c b/arch/x86/emit_32.c index 99dfa999..96c386fc 100644 --- a/arch/x86/emit_32.c +++ b/arch/x86/emit_32.c @@ -562,11 +562,6 @@ static void emit_alu_imm_reg(struct buffer *buf, unsigned char opc_ext, emit_imm(buf, imm); } -static void __emit_add_imm_reg(struct buffer *buf, long imm, enum machine_reg reg) -{ - emit_alu_imm_reg(buf, 0x00, imm, reg); -} - static void __emit_sub_imm_reg(struct buffer *buf, unsigned long imm, enum machine_reg reg) { @@ -634,10 +629,8 @@ void emit_prolog(struct buffer *buf, struct stack_frame *frame, emit_save_callee_save_regs(buf); - if (opt_debug_stack) { + if (opt_debug_stack) __emit_push_imm(buf, STACK_FRAME_REDZONE_END); - __emit_sub_imm_reg(buf, X86_STACK_ALIGN - sizeof(unsigned long), MACH_REG_ESP); - } } /* call-site in edx, magic is in ecx */ @@ -650,7 +643,6 @@ stack_frame_redzone_fail(void *eax, void *edx, void *ecx) static void emit_stack_redzone_check(struct buffer *buf) { - __emit_add_imm_reg(buf, X86_STACK_ALIGN - sizeof(unsigned long), MACH_REG_ESP); __emit_mov_imm_reg(buf, (unsigned long) buffer_current(buf), MACH_REG_EDX); __emit_pop_reg(buf, MACH_REG_ECX); @@ -800,6 +792,11 @@ static void emit_or_imm_membase(struct insn *insn, struct buffer *buf, struct ba emit_imm32(buf, insn->src.disp); } +static void __emit_add_imm_reg(struct buffer *buf, long imm, enum machine_reg reg) +{ + emit_alu_imm_reg(buf, 0x00, imm, reg); +} + static void emit_indirect_jump_reg(struct buffer *buf, enum machine_reg reg) { emit(buf, 0xff); |