workaround weird bug lying somewhere in cygwin generated micro-ops for

FP load/store of doubles
This commit is contained in:
gbeauche 2005-03-19 07:18:18 +00:00
parent ae6555fd46
commit 8071d90849

View File

@ -37,6 +37,12 @@
#include "mon_disass.h"
#endif
// Disable dynamic translation for floating-point load/store of doubles?
// XXX: could this due to some rounding while processing these?
#ifdef _WIN32
#define DISABLE_FP_DOUBLE_LOAD_STORE 1
#endif
// Define to enable const branches optimization
#define FOLLOW_CONST_JUMPS 1
@ -1103,6 +1109,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
dg.gen_store_T0_crf(crfD_field::extract(opcode));
break;
}
#ifndef DISABLE_FP_DOUBLE_LOAD_STORE
case PPC_I(LFD): // Load Floating-Point Double
op.mem.size = 8;
op.mem.do_update = 0;
@ -1123,6 +1130,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
op.mem.do_update = 0;
op.mem.do_indexed = 1;
goto do_fp_load;
#endif
case PPC_I(LFS): // Load Floating-Point Single
op.mem.size = 4;
op.mem.do_update = 0;
@ -1183,6 +1191,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
}
break;
}
#ifndef DISABLE_FP_DOUBLE_LOAD_STORE
case PPC_I(STFD): // Store Floating-Point Double
op.mem.size = 8;
op.mem.do_update = 0;
@ -1203,6 +1212,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
op.mem.do_update = 0;
op.mem.do_indexed = 1;
goto do_fp_store;
#endif
case PPC_I(STFS): // Store Floating-Point Single
op.mem.size = 4;
op.mem.do_update = 0;