This unifies emit_epilog() for x86-32 and x86-64 and makes it tidier. Signed-off-by: Eduard - Gabriel Munteanu <eduard.munte...@linux360.ro> --- arch/x86/emit-code.c | 24 ++++++++++-------------- 1 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/arch/x86/emit-code.c b/arch/x86/emit-code.c index 499bff4..4e2745c 100644 --- a/arch/x86/emit-code.c +++ b/arch/x86/emit-code.c @@ -55,6 +55,7 @@ static void __emit_push_membase(struct buffer *buf, unsigned long disp); static void __emit_push_reg(struct buffer *buf, enum machine_reg reg); static void emit_exception_test(struct buffer *buf, enum machine_reg reg); +static void emit_restore_regs(struct buffer *buf); /************************ * Common code emitters * @@ -332,6 +333,13 @@ void backpatch_branch_target(struct buffer *buf, write_imm32(buf, backpatch_offset, relative_addr); } +void emit_epilog(struct buffer *buf) +{ + emit_leave(buf); + emit_restore_regs(buf); + emit_ret(buf); +} + #ifdef CONFIG_X86_32 /************************ @@ -722,22 +730,13 @@ static void emit_push_imm(struct buffer *buf, struct operand *operand) __emit_push_imm(buf, operand->imm); } -static void __emit_epilog(struct buffer *buf) +static void emit_restore_regs(struct buffer *buf) { - emit_leave(buf); - - /* Restore callee saved registers */ __emit_pop_reg(buf, REG_EBX); __emit_pop_reg(buf, REG_ESI); __emit_pop_reg(buf, REG_EDI); } -void emit_epilog(struct buffer *buf) -{ - __emit_epilog(buf); - emit_ret(buf); -} - static void __emit_jmp(struct buffer *buf, unsigned long addr) { unsigned long current = (unsigned long)buffer_current(buf); @@ -1591,11 +1590,8 @@ void emit_prolog(struct buffer *buf, unsigned long nr_locals) REG_RSP); } -void emit_epilog(struct buffer *buf) +static void emit_restore_regs(struct buffer *buf) { - emit_leave(buf); - - /* Restore callee saved registers */ __emit_pop_reg(buf, REG_R15); __emit_pop_reg(buf, REG_R14); __emit_pop_reg(buf, REG_R13); -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel