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:
parent
345649c054
commit
e83c80f718
@ -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),
|
||||||
|
Loading…
Reference in New Issue
Block a user