in arch/alpha/math-emu/math.c, one needs to disassemble the 32bit float
value as 32 bit integer, and not presuppose it to be a 64 bit value with
a double mentality. One this change is applied, then my sample test
works everywhere.
/gat
case FOP_FNC_CVTxS:
/* It is irritating that DEC encoded CVTST with
SRC == T_floating. It is also interesting
that
the bit used to tell the two apart is /U...
*/
if (insn & 0x2000) {
FP_CONV(S,D,1,1,SR,DB);
goto pack_s;
} else {
/* CVTST need do nothing else but copy
the
bits and repack. */
#if 0
DR_c = DB_c;
DR_s = DB_s;
DR_e = DB_e;
DR_f = DB_f;
#else
/* Not exactly, vb needs to be in a 32
bit
float form, and UNPACK'ed as such! */
vb = alpha_read_fp_reg_s(fb);
FP_UNPACK_SP(SB, &vb);
DR_c = SB_c;
DR_s = SB_s;
DR_e = SB_e;
DR_f = SB_f << ( 52 - 23 );
#endif
goto pack_d;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Mon Oct 23 2000 - 21:00:09 EST