+2000-06-22 Alexandre Oliva <aoliva@cygnus.com>
+
+ * armemu.c (MultiplyAdd64): Fix computation of flag N.
+
2000-06-20 Alexandre Oliva <aoliva@cygnus.com>
* armemu.h (NEGBRANCH): Do not overwrite the two most significant
if (scc)
{
- if ((RdHi == 0) && (RdLo == 0))
- ARMul_NegZero (state, RdHi); /* zero value */
- else
- ARMul_NegZero (state, scc); /* non-zero value */
+ /* Ensure that both RdHi and RdLo are used to compute Z, but
+ don't let RdLo's sign bit make it to N. */
+ ARMul_NegZero (state, RdHi | (RdLo >> 16) | (RdLo & 0xFFFF));
}
return scount + 1; /* extra cycle for addition */