* src/vm/jit/powerpc/codegen.h (var_to_reg_dbl): Added.
authortwisti <none@none>
Tue, 24 Jan 2006 19:09:17 +0000 (19:09 +0000)
committertwisti <none@none>
Tue, 24 Jan 2006 19:09:17 +0000 (19:09 +0000)
(M_COPY): Handle doubles properly.

src/vm/jit/powerpc/codegen.h

index 8835575d1b807364011e42f846504269273f37b2..1aa21656f6abb4492298032c82bbfdf29b6f80d1 100644 (file)
@@ -31,7 +31,7 @@
    Changes: Christian Thalinger
             Christian Ullrich
 
-   $Id: codegen.h 4369 2006-01-24 13:52:12Z twisti $
+   $Id: codegen.h 4372 2006-01-24 19:09:17Z twisti $
 
 */
 
        } while (0)
 
 
+#define var_to_reg_dbl(regnr,v,tempnr) \
+       do { \
+               if ((v)->flags & INMEMORY) { \
+                       COUNT_SPILLS; \
+                       M_DLD(tempnr, REG_SP, (v)->regoff * 4); \
+                       regnr = tempnr; \
+               } else { \
+                       regnr = (v)->regoff; \
+               } \
+       } while (0)
+
+
 /* store_reg_to_var_xxx ********************************************************
 
    This function generates the code to store the result of an
                     store_reg_to_var_int(to, d); \
                 } \
             } else { \
-                var_to_reg_flt(s1, from, d); \
-                M_FLTMOVE(s1,d); \
-                store_reg_to_var_flt(to, d); \
+                if (IS_2_WORD_TYPE(from->type)) { \
+                    var_to_reg_dbl(s1, from, d); \
+                    M_FLTMOVE(s1,d); \
+                    store_reg_to_var_dbl(to, d); \
+                } else { \
+                    var_to_reg_flt(s1, from, d); \
+                    M_FLTMOVE(s1,d); \
+                    store_reg_to_var_flt(to, d); \
+                } \
             } \
         } \
     } while (0)