Fix MIPS FP underflow handling, spotted by Daniel Jacobowitz.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3255 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
df0d373665
commit
418d7c7169
@ -1032,10 +1032,6 @@ FLOAT_OP(name, d) \
|
|||||||
update_fcr31(); \
|
update_fcr31(); \
|
||||||
if (GET_FP_CAUSE(env->fpu->fcr31) & FP_INVALID) \
|
if (GET_FP_CAUSE(env->fpu->fcr31) & FP_INVALID) \
|
||||||
FDT2 = 0x7ff7ffffffffffffULL; \
|
FDT2 = 0x7ff7ffffffffffffULL; \
|
||||||
else if (GET_FP_CAUSE(env->fpu->fcr31) & FP_UNDERFLOW) { \
|
|
||||||
if ((env->fpu->fcr31 & 0x3) == 0) \
|
|
||||||
FDT2 &= FLOAT_SIGN64; \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
FLOAT_OP(name, s) \
|
FLOAT_OP(name, s) \
|
||||||
{ \
|
{ \
|
||||||
@ -1044,10 +1040,6 @@ FLOAT_OP(name, s) \
|
|||||||
update_fcr31(); \
|
update_fcr31(); \
|
||||||
if (GET_FP_CAUSE(env->fpu->fcr31) & FP_INVALID) \
|
if (GET_FP_CAUSE(env->fpu->fcr31) & FP_INVALID) \
|
||||||
FST2 = 0x7fbfffff; \
|
FST2 = 0x7fbfffff; \
|
||||||
else if (GET_FP_CAUSE(env->fpu->fcr31) & FP_UNDERFLOW) { \
|
|
||||||
if ((env->fpu->fcr31 & 0x3) == 0) \
|
|
||||||
FST2 &= FLOAT_SIGN32; \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
FLOAT_OP(name, ps) \
|
FLOAT_OP(name, ps) \
|
||||||
{ \
|
{ \
|
||||||
@ -1058,11 +1050,6 @@ FLOAT_OP(name, ps) \
|
|||||||
if (GET_FP_CAUSE(env->fpu->fcr31) & FP_INVALID) { \
|
if (GET_FP_CAUSE(env->fpu->fcr31) & FP_INVALID) { \
|
||||||
FST2 = 0x7fbfffff; \
|
FST2 = 0x7fbfffff; \
|
||||||
FSTH2 = 0x7fbfffff; \
|
FSTH2 = 0x7fbfffff; \
|
||||||
} else if (GET_FP_CAUSE(env->fpu->fcr31) & FP_UNDERFLOW) { \
|
|
||||||
if ((env->fpu->fcr31 & 0x3) == 0) { \
|
|
||||||
FST2 &= FLOAT_SIGN32; \
|
|
||||||
FSTH2 &= FLOAT_SIGN32; \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
FLOAT_BINOP(add)
|
FLOAT_BINOP(add)
|
||||||
|
Loading…
Reference in New Issue
Block a user