mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-06-30 20:29:34 +00:00
workaround weird bug lying somewhere in cygwin generated micro-ops for
FP load/store of doubles
This commit is contained in:
parent
ae6555fd46
commit
8071d90849
|
@ -37,6 +37,12 @@
|
||||||
#include "mon_disass.h"
|
#include "mon_disass.h"
|
||||||
#endif
|
#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 to enable const branches optimization
|
||||||
#define FOLLOW_CONST_JUMPS 1
|
#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));
|
dg.gen_store_T0_crf(crfD_field::extract(opcode));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifndef DISABLE_FP_DOUBLE_LOAD_STORE
|
||||||
case PPC_I(LFD): // Load Floating-Point Double
|
case PPC_I(LFD): // Load Floating-Point Double
|
||||||
op.mem.size = 8;
|
op.mem.size = 8;
|
||||||
op.mem.do_update = 0;
|
op.mem.do_update = 0;
|
||||||
|
@ -1123,6 +1130,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
|
||||||
op.mem.do_update = 0;
|
op.mem.do_update = 0;
|
||||||
op.mem.do_indexed = 1;
|
op.mem.do_indexed = 1;
|
||||||
goto do_fp_load;
|
goto do_fp_load;
|
||||||
|
#endif
|
||||||
case PPC_I(LFS): // Load Floating-Point Single
|
case PPC_I(LFS): // Load Floating-Point Single
|
||||||
op.mem.size = 4;
|
op.mem.size = 4;
|
||||||
op.mem.do_update = 0;
|
op.mem.do_update = 0;
|
||||||
|
@ -1183,6 +1191,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifndef DISABLE_FP_DOUBLE_LOAD_STORE
|
||||||
case PPC_I(STFD): // Store Floating-Point Double
|
case PPC_I(STFD): // Store Floating-Point Double
|
||||||
op.mem.size = 8;
|
op.mem.size = 8;
|
||||||
op.mem.do_update = 0;
|
op.mem.do_update = 0;
|
||||||
|
@ -1203,6 +1212,7 @@ powerpc_cpu::compile_block(uint32 entry_point)
|
||||||
op.mem.do_update = 0;
|
op.mem.do_update = 0;
|
||||||
op.mem.do_indexed = 1;
|
op.mem.do_indexed = 1;
|
||||||
goto do_fp_store;
|
goto do_fp_store;
|
||||||
|
#endif
|
||||||
case PPC_I(STFS): // Store Floating-Point Single
|
case PPC_I(STFS): // Store Floating-Point Single
|
||||||
op.mem.size = 4;
|
op.mem.size = 4;
|
||||||
op.mem.do_update = 0;
|
op.mem.do_update = 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user