From d50e7e4686c672e80aab50532fa9c25c9bbf226b Mon Sep 17 00:00:00 2001 From: StapleButter Date: Fri, 29 Dec 2017 03:17:32 +0100 Subject: [PATCH] fix SMULWx/SMLAWx. fixes #78, finally --- src/ARMInterpreter_ALU.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ARMInterpreter_ALU.cpp b/src/ARMInterpreter_ALU.cpp index 7ff82556..4f76b8bf 100644 --- a/src/ARMInterpreter_ALU.cpp +++ b/src/ARMInterpreter_ALU.cpp @@ -895,7 +895,7 @@ void A_SMLAWy(ARM* cpu) if (cpu->CurInstr & (1<<6)) rs >>= 16; else rs &= 0xFFFF; - u32 res_mul = ((s32)rm * (s16)rs) >> 16; // CHECKME + u32 res_mul = ((s64)(s32)rm * (s16)rs) >> 16; u32 res = res_mul + rn; cpu->R[(cpu->CurInstr >> 16) & 0xF] = res; @@ -930,7 +930,7 @@ void A_SMULWy(ARM* cpu) if (cpu->CurInstr & (1<<6)) rs >>= 16; else rs &= 0xFFFF; - u32 res = ((s32)rm * (s16)rs) >> 16; // CHECKME + u32 res = ((s64)(s32)rm * (s16)rs) >> 16; cpu->R[(cpu->CurInstr >> 16) & 0xF] = res; }