1
0
Fork 0

Merge pull request #273 from bunnei/more-skyeye-fixes

ARM: Pull some SkyEye fixes from 3dmoo.
This commit is contained in:
bunnei 2014-12-14 21:58:05 -05:00
commit 2cac148ff3
3 changed files with 485 additions and 419 deletions

File diff suppressed because it is too large Load Diff

View File

@ -281,6 +281,7 @@ struct ARMul_State
ARMword currentexaddr; ARMword currentexaddr;
ARMword currentexval; ARMword currentexval;
ARMword currentexvald;
ARMword servaddr; ARMword servaddr;
unsigned NextInstr; unsigned NextInstr;

View File

@ -522,8 +522,7 @@ static s64 vfp_single_to_doubleintern(ARMul_State* state, s32 m, u32 fpscr) //ic
if (tm == VFP_QNAN) if (tm == VFP_QNAN)
vdd.significand |= VFP_DOUBLE_SIGNIFICAND_QNAN; vdd.significand |= VFP_DOUBLE_SIGNIFICAND_QNAN;
goto pack_nan; goto pack_nan;
} } else if (tm & VFP_ZERO)
else if (tm & VFP_ZERO)
vdd.exponent = 0; vdd.exponent = 0;
else else
vdd.exponent = vsm.exponent + (1023 - 127); vdd.exponent = vsm.exponent + (1023 - 127);
@ -620,7 +619,7 @@ static u32 vfp_single_ftoui(ARMul_State* state, int sd, int unused, s32 m, u32 f
if (vsm.exponent >= 127 + 32) { if (vsm.exponent >= 127 + 32) {
d = vsm.sign ? 0 : 0xffffffff; d = vsm.sign ? 0 : 0xffffffff;
exceptions = FPSCR_IOC; exceptions = FPSCR_IOC;
} else if (vsm.exponent >= 127 - 1) { } else if (vsm.exponent >= 127) {
int shift = 127 + 31 - vsm.exponent; int shift = 127 + 31 - vsm.exponent;
u32 rem, incr = 0; u32 rem, incr = 0;
@ -705,7 +704,7 @@ static u32 vfp_single_ftosi(ARMul_State* state, int sd, int unused, s32 m, u32 f
if (vsm.sign) if (vsm.sign)
d = ~d; d = ~d;
exceptions |= FPSCR_IOC; exceptions |= FPSCR_IOC;
} else if (vsm.exponent >= 127 - 1) { } else if (vsm.exponent >= 127) {
int shift = 127 + 31 - vsm.exponent; int shift = 127 + 31 - vsm.exponent;
u32 rem, incr = 0; u32 rem, incr = 0;