Re: TME fpu problem
Martin Husemann <[email protected]> Mon, 9 Dec 2013 22:28:38 +0100
| Newsgroups | gmane.os.netbsd.ports.sun3 |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Dec 09, 2013 at 10:30:25PM +0900, Izumi Tsutsui wrote:
> Probably TME (or its compiler) problem.
Something(tm) seems to set TME_M6888X_FPSR_EXC_INEX2, but I have not been
able to track it down yet.
This happens (quite often) in _tme_ieee754_strict_extended80_rint()
and while running top once in _tme_ieee754_strict_double_from_extended80().
Before I could use the debug version of TME I had to apply the patch below
(which clearly is incorrect) - the assert would otherwise trigger during
a cas32.
Can someone more m68k-savy maybe help fix (both)?
Martin
--- ic/m68k/m68k-execute.c.orig 2013-12-09 21:38:30.000000000 +0100
+++ ic/m68k/m68k-execute.c 2013-12-09 21:16:41.000000000 +0100
@@ -816,9 +816,11 @@
|| (ic->_tme_m68k_mode_flags & TME_M68K_EXECUTION_INST_CANFAULT)) {
transfer_next_before = ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next;
(*func)(ic, TME_M68K_OPCODE_OP0_WHICH(ic, params), TME_M68K_OPCODE_OP1_WHICH(ic, params));
+#if 0
assert(!(ic->_tme_m68k_mode_flags & TME_M68K_EXECUTION_INST_CANFAULT)
!= (ic->_tme_m68k_sequence._tme_m68k_sequence_transfer_next
!= transfer_next_before));
+#endif
ic->_tme_m68k_mode_flags &= ~TME_M68K_EXECUTION_INST_CANFAULT;
}