mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-27 01:22:37 -06:00
ARM: Pull some SkyEye fixes from 3dmoo.
This commit is contained in:
parent
af1cd769e7
commit
d26b7146ce
3 changed files with 485 additions and 419 deletions
File diff suppressed because it is too large
Load diff
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue