* src/vm/vm.c (vm_printconfig): Better and correct output.
[cacao.git] / src / vm / jit / sparc64 / md-asm.h
index d875e472ee35ce53b5357c31139a415b4453a64e..50017946f378d78c8ea663d4c93da6d044ac3681 100644 (file)
 #define itmp2  %g2
 #define itmp3  %g3
 
+/* PLT unsafe temp regs */
+#define temp4 %g4
+#define temp5 %g5
+
 #define mptr_itmp2 itmp2
 
 #define xptr_itmp2 itmp2
 #define pv_caller  %o5
 #define pv_callee  %i5
 
+
+#define fv0     %f0
+#define ft0     %f2
+#define ft1     %f4
+#define ft2     %f6
+#define ft3     %f8
+#define ft4     %f10
+#define ft5     %f12
+#define ft6     %f14
+
+#define fa0     %f16
+#define fa0f    %f17
+#define fa1     %f18
+#define fa1f    %f19
+#define fa2     %f20
+#define fa2f    %f21
+#define fa3     %f22
+#define fa3f    %f23
+#define fa4     %f24
+#define fa4f    %f25
+#define ft7     %f26
+#define ft8     %f28
+#define ft9     %f30
+
+
+#define bias    2047
+
+
+/* save and restore macros ****************************************************/
+
+#define SAVE_FLOAT_RETURN_REGISTER(off) \
+       std     fv0,[%sp + bias + ((off)*8)] ;
+
+#define RESTORE_FLOAT_RETURN_REGISTER(off) \
+       ldd     [%sp + bias + ((off)*8)],fv0 ;
+
+
+#define SAVE_FLOAT_ARGUMENT_REGISTERS(off) \
+       std     fa0,[%sp + bias + ((0+(off))*8)] ; \
+       std     fa1,[%sp + bias + ((1+(off))*8)] ; \
+       std     fa2,[%sp + bias + ((2+(off))*8)] ; \
+       std     fa3,[%sp + bias + ((3+(off))*8)] ; \
+       std     fa4,[%sp + bias + ((4+(off))*8)] ;
+
+
+#define RESTORE_FLOAT_ARGUMENT_REGISTERS(off) \
+       ldd     [%sp + bias + ((0+(off))*8)],fa0 ; \
+       ldd     [%sp + bias + ((1+(off))*8)],fa1 ; \
+       ldd     [%sp + bias + ((2+(off))*8)],fa2 ; \
+       ldd     [%sp + bias + ((3+(off))*8)],fa3 ; \
+       ldd     [%sp + bias + ((4+(off))*8)],fa4 ;
+       
+#define SAVE_FLOAT_TEMPORARY_REGISTERS(off) \
+       std     ft0,[%sp + bias + ((0+(off))*8)] ; \
+       std     ft1,[%sp + bias + ((1+(off))*8)] ; \
+       std     ft2,[%sp + bias + ((2+(off))*8)] ; \
+       std     ft3,[%sp + bias + ((3+(off))*8)] ; \
+       std     ft4,[%sp + bias + ((4+(off))*8)] ; \
+       std     ft5,[%sp + bias + ((5+(off))*8)] ; \
+       std     ft6,[%sp + bias + ((6+(off))*8)] ; \
+       std     ft7,[%sp + bias + ((7+(off))*8)] ; \
+       std     ft8,[%sp + bias + ((8+(off))*8)] ; \
+       std     ft9,[%sp + bias + ((9+(off))*8)] ; \
+
+#define RESTORE_FLOAT_TEMPORARY_REGISTERS(off) \
+       ldd     [%sp + bias + ((0+(off))*8)],ft0 ; \
+       ldd     [%sp + bias + ((1+(off))*8)],ft1 ; \
+       ldd     [%sp + bias + ((2+(off))*8)],ft2 ; \
+       ldd     [%sp + bias + ((3+(off))*8)],ft3 ; \
+       ldd     [%sp + bias + ((4+(off))*8)],ft4 ; \
+       ldd     [%sp + bias + ((5+(off))*8)],ft5 ; \
+       ldd     [%sp + bias + ((6+(off))*8)],ft6 ; \
+       ldd     [%sp + bias + ((7+(off))*8)],ft7 ; \
+       ldd     [%sp + bias + ((8+(off))*8)],ft8 ; \
+       ldd     [%sp + bias + ((9+(off))*8)],ft9 ; \
+       
+       
+       
 #endif /* _MD_ASM_H */