TCG/x86: use TCG_REG_CALL_STACK instead of TCG_REG_ESP

Except for specific cases where the use of %esp changes the encoding of
the instruction, it's cleaner to use TCG_REG_CALL_STACK instead of
TCG_REG_ESP.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Blue Swirl 2011-05-28 06:51:52 +00:00
parent 345649c054
commit e83c80f718

View File

@ -1398,7 +1398,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
/* Pop and discard. This is 2 bytes smaller than the add. */ /* Pop and discard. This is 2 bytes smaller than the add. */
tcg_out_pop(s, TCG_REG_ECX); tcg_out_pop(s, TCG_REG_ECX);
} else if (stack_adjust != 0) { } else if (stack_adjust != 0) {
tcg_out_addi(s, TCG_REG_ESP, stack_adjust); tcg_out_addi(s, TCG_REG_CALL_STACK, stack_adjust);
} }
/* label2: */ /* label2: */
@ -1931,7 +1931,7 @@ static void tcg_target_qemu_prologue(TCGContext *s)
frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) & frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) &
~(TCG_TARGET_STACK_ALIGN - 1); ~(TCG_TARGET_STACK_ALIGN - 1);
stack_addend = frame_size - push_size; stack_addend = frame_size - push_size;
tcg_out_addi(s, TCG_REG_ESP, -stack_addend); tcg_out_addi(s, TCG_REG_CALL_STACK, -stack_addend);
tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]);
@ -1941,7 +1941,7 @@ static void tcg_target_qemu_prologue(TCGContext *s)
/* TB epilogue */ /* TB epilogue */
tb_ret_addr = s->code_ptr; tb_ret_addr = s->code_ptr;
tcg_out_addi(s, TCG_REG_ESP, stack_addend); tcg_out_addi(s, TCG_REG_CALL_STACK, stack_addend);
for (i = ARRAY_SIZE(tcg_target_callee_save_regs) - 1; i >= 0; i--) { for (i = ARRAY_SIZE(tcg_target_callee_save_regs) - 1; i >= 0; i--) {
tcg_out_pop(s, tcg_target_callee_save_regs[i]); tcg_out_pop(s, tcg_target_callee_save_regs[i]);
@ -1978,7 +1978,7 @@ static void tcg_target_init(TCGContext *s)
} }
tcg_regset_clear(s->reserved_regs); tcg_regset_clear(s->reserved_regs);
tcg_regset_set_reg(s->reserved_regs, TCG_REG_ESP); tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK);
tcg_add_target_add_op_defs(x86_op_defs); tcg_add_target_add_op_defs(x86_op_defs);
tcg_set_frame(s, TCG_AREG0, offsetof(CPUState, temp_buf), tcg_set_frame(s, TCG_AREG0, offsetof(CPUState, temp_buf),