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;
     }