From c78b82dd2cf1e8a9a6645a83c8c1fb33b3fd9295 Mon Sep 17 00:00:00 2001 From: merry Date: Sun, 20 Mar 2022 20:51:54 +0000 Subject: [PATCH] vfp: VLDM is UNPREDICABLE when n is R15 in thumb mode --- src/dynarmic/frontend/A32/translate/impl/vfp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dynarmic/frontend/A32/translate/impl/vfp.cpp b/src/dynarmic/frontend/A32/translate/impl/vfp.cpp index 651b7d61..58300efb 100644 --- a/src/dynarmic/frontend/A32/translate/impl/vfp.cpp +++ b/src/dynarmic/frontend/A32/translate/impl/vfp.cpp @@ -1407,7 +1407,7 @@ bool TranslatorVisitor::vfp_VLDM_a1(Cond cond, bool p, bool u, bool D, bool w, R return arm_UDF(); } - if (n == Reg::PC && w) { + if (n == Reg::PC && (w || ir.current_location.TFlag())) { return UnpredictableInstruction(); } @@ -1457,7 +1457,7 @@ bool TranslatorVisitor::vfp_VLDM_a2(Cond cond, bool p, bool u, bool D, bool w, R return arm_UDF(); } - if (n == Reg::PC && w) { + if (n == Reg::PC && (w || ir.current_location.TFlag())) { return UnpredictableInstruction(); }