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

Reply via email to