Fix ftoi and disable VFPv3

This commit is contained in:
Jannik Vogel 2016-03-24 23:00:54 +01:00
parent 9dd3976f9f
commit a34ea8ceb0
2 changed files with 6 additions and 2 deletions

View File

@ -422,6 +422,10 @@ ARMDecodeStatus DecodeARMInstruction(u32 instr, s32* idx) {
n = arm_instruction[i].attribute_value; n = arm_instruction[i].attribute_value;
base = 0; base = 0;
// 3DS has no VFP3 support
if (arm_instruction[i].version == ARMVFP3)
continue;
while (n) { while (n) {
if (arm_instruction[i].content[base + 1] == 31 && arm_instruction[i].content[base] == 0) { if (arm_instruction[i].content[base + 1] == 31 && arm_instruction[i].content[base] == 0) {
// clrex // clrex

View File

@ -560,7 +560,7 @@ static u32 vfp_double_ftoui(ARMul_State* state, int sd, int unused, int dm, u32
if (vdm.exponent >= 1023 + 32) { if (vdm.exponent >= 1023 + 32) {
d = vdm.sign ? 0 : 0xffffffff; d = vdm.sign ? 0 : 0xffffffff;
exceptions = FPSCR_IOC; exceptions = FPSCR_IOC;
} else if (vdm.exponent >= 1023 - 1) { } else if (vdm.exponent >= 1023) {
int shift = 1023 + 63 - vdm.exponent; int shift = 1023 + 63 - vdm.exponent;
u64 rem, incr = 0; u64 rem, incr = 0;
@ -644,7 +644,7 @@ static u32 vfp_double_ftosi(ARMul_State* state, int sd, int unused, int dm, u32
if (vdm.sign) if (vdm.sign)
d = ~d; d = ~d;
exceptions |= FPSCR_IOC; exceptions |= FPSCR_IOC;
} else if (vdm.exponent >= 1023 - 1) { } else if (vdm.exponent >= 1023) {
int shift = 1023 + 63 - vdm.exponent; /* 58 */ int shift = 1023 + 63 - vdm.exponent; /* 58 */
u64 rem, incr = 0; u64 rem, incr = 0;