We do not longer need to do this because this bug has been solved: http://jato.lighthouseapp.com/projects/29055/tickets/5-sse-registers-are-saved-and-registered-unconditionally
Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- arch/x86/emit-code.c | 83 ----------------------------------- arch/x86/include/arch/stack-frame.h | 1 - 2 files changed, 0 insertions(+), 84 deletions(-) diff --git a/arch/x86/emit-code.c b/arch/x86/emit-code.c index 2253202..92044fd 100644 --- a/arch/x86/emit-code.c +++ b/arch/x86/emit-code.c @@ -64,13 +64,6 @@ static void emit_indirect_jump_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); -static void __emit_mov_xmm_membase(struct buffer *buf, enum machine_reg src, - enum machine_reg base, unsigned long offs); -static void __emit_mov_membase_xmm(struct buffer *buf, enum machine_reg base, unsigned long offs, enum machine_reg dst); -static void __emit_mov_64_xmm_membase(struct buffer *buf, enum machine_reg src, - enum machine_reg base, unsigned long offs); -static void __emit_mov_64_membase_xmm(struct buffer *buf, enum machine_reg base, unsigned long offs, enum machine_reg dst); - /************************ * Common code emitters * ************************/ @@ -1009,27 +1002,6 @@ void emit_prolog(struct buffer *buf, unsigned long nr_locals) __emit_push_reg(buf, MACH_REG_ESI); __emit_push_reg(buf, MACH_REG_EBX); - __emit_sub_imm_reg(buf, 8 * 8, MACH_REG_ESP); - if (cpu_has(X86_FEATURE_SSE2)) { - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM0, MACH_REG_ESP, 0); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM1, MACH_REG_ESP, 8); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM2, MACH_REG_ESP, 16); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM3, MACH_REG_ESP, 24); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM4, MACH_REG_ESP, 32); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM5, MACH_REG_ESP, 40); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM6, MACH_REG_ESP, 48); - __emit_mov_64_xmm_membase(buf, MACH_REG_XMM7, MACH_REG_ESP, 56); - } else { - __emit_mov_xmm_membase(buf, MACH_REG_XMM0, MACH_REG_ESP, 0); - __emit_mov_xmm_membase(buf, MACH_REG_XMM1, MACH_REG_ESP, 8); - __emit_mov_xmm_membase(buf, MACH_REG_XMM2, MACH_REG_ESP, 16); - __emit_mov_xmm_membase(buf, MACH_REG_XMM3, MACH_REG_ESP, 24); - __emit_mov_xmm_membase(buf, MACH_REG_XMM4, MACH_REG_ESP, 32); - __emit_mov_xmm_membase(buf, MACH_REG_XMM5, MACH_REG_ESP, 40); - __emit_mov_xmm_membase(buf, MACH_REG_XMM6, MACH_REG_ESP, 48); - __emit_mov_xmm_membase(buf, MACH_REG_XMM7, MACH_REG_ESP, 56); - } - __emit_push_reg(buf, MACH_REG_EBP); __emit_mov_reg_reg(buf, MACH_REG_ESP, MACH_REG_EBP); @@ -1076,27 +1048,6 @@ static void emit_push_imm(struct buffer *buf, struct operand *operand) static void emit_restore_regs(struct buffer *buf) { - if (cpu_has(X86_FEATURE_SSE2)) { - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 0, MACH_REG_XMM0); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 8, MACH_REG_XMM1); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 16, MACH_REG_XMM2); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 24, MACH_REG_XMM3); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 32, MACH_REG_XMM4); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 40, MACH_REG_XMM5); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 48, MACH_REG_XMM6); - __emit_mov_64_membase_xmm(buf, MACH_REG_ESP, 56, MACH_REG_XMM7); - } else { - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 0, MACH_REG_XMM0); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 8, MACH_REG_XMM1); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 16, MACH_REG_XMM2); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 24, MACH_REG_XMM3); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 32, MACH_REG_XMM4); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 40, MACH_REG_XMM5); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 48, MACH_REG_XMM6); - __emit_mov_membase_xmm(buf, MACH_REG_ESP, 56, MACH_REG_XMM7); - } - __emit_add_imm_reg(buf, 8 * 8, MACH_REG_ESP); - __emit_pop_reg(buf, MACH_REG_EBX); __emit_pop_reg(buf, MACH_REG_ESI); __emit_pop_reg(buf, MACH_REG_EDI); @@ -1631,40 +1582,6 @@ static void emit_mov_memindex_xmm(struct buffer *buf, struct operand *src, emit(buf, encode_sib(src->shift, encode_reg(&src->index_reg), encode_reg(&src->base_reg))); } -static void __emit_mov_xmm_membase(struct buffer *buf, enum machine_reg src, - enum machine_reg base, unsigned long offs) -{ - emit(buf, 0xf3); - emit(buf, 0x0f); - __emit_membase_reg(buf, 0x11, base, offs, src); - -} - -static void __emit_mov_membase_xmm(struct buffer *buf, enum machine_reg base, - unsigned long offs, enum machine_reg dst) -{ - emit(buf, 0xf3); - emit(buf, 0x0f); - __emit_membase_reg(buf, 0x10, base, offs, dst); -} - -static void __emit_mov_64_xmm_membase(struct buffer *buf, enum machine_reg src, - enum machine_reg base, unsigned long offs) -{ - emit(buf, 0xf2); - emit(buf, 0x0f); - __emit_membase_reg(buf, 0x11, base, offs, src); - -} - -static void __emit_mov_64_membase_xmm(struct buffer *buf, enum machine_reg base, - unsigned long offs, enum machine_reg dst) -{ - emit(buf, 0xf2); - emit(buf, 0x0f); - __emit_membase_reg(buf, 0x10, base, offs, dst); -} - static void emit_mov_64_memindex_xmm(struct buffer *buf, struct operand *src, struct operand *dest) { diff --git a/arch/x86/include/arch/stack-frame.h b/arch/x86/include/arch/stack-frame.h index bf69b27..4b3a5e6 100644 --- a/arch/x86/include/arch/stack-frame.h +++ b/arch/x86/include/arch/stack-frame.h @@ -18,7 +18,6 @@ struct native_stack_frame { struct jit_stack_frame { void *prev; /* previous stack frame link */ - unsigned long long xmm[8]; unsigned long old_ebx; unsigned long old_esi; unsigned long old_edi; -- 1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel