aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Enberg <penberg@kernel.org>2012-02-15 17:07:13 +0200
committerPekka Enberg <penberg@kernel.org>2012-02-15 17:07:13 +0200
commit28e743b56baf43b1a4974f0aff3a5f34b69f7def (patch)
treec23883daaac50eb31038fc4342a1f358df50e4d1
parent87c7df52226d56d7b0e25c2ffc89195cac6ec4a6 (diff)
downloadjato-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.c15
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);