From 2119dfc9267b8138686f76d9f85090b91b96bdb5 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Fri, 19 Aug 2016 00:36:58 +0100 Subject: [PATCH] translate_arm/multiply: MLA is UNPREDICTABLE when Ra == R15 --- src/frontend/translate/translate_arm/multiply.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/translate/translate_arm/multiply.cpp b/src/frontend/translate/translate_arm/multiply.cpp index c41569c7..33f07025 100644 --- a/src/frontend/translate/translate_arm/multiply.cpp +++ b/src/frontend/translate/translate_arm/multiply.cpp @@ -11,7 +11,7 @@ namespace Arm { // Multiply (Normal) instructions bool ArmTranslatorVisitor::arm_MLA(Cond cond, bool S, Reg d, Reg a, Reg m, Reg n) { - if (d == Reg::PC || n == Reg::PC || m == Reg::PC) + if (d == Reg::PC || n == Reg::PC || m == Reg::PC || a == Reg::PC) return UnpredictableInstruction(); if (ConditionPassed(cond)) { auto result = ir.Add(ir.Mul(ir.GetRegister(n), ir.GetRegister(m)), ir.GetRegister(a));