]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Implement v7 barrier insns (DMB, DSB, ISB) in Thumb mode
authorJulian Seward <jseward@acm.org>
Fri, 24 Sep 2010 23:48:29 +0000 (23:48 +0000)
committerJulian Seward <jseward@acm.org>
Fri, 24 Sep 2010 23:48:29 +0000 (23:48 +0000)
(Peter Maydell, peter.maydell@linaro.org).  Fixes #252253.

git-svn-id: svn://svn.valgrind.org/vex/trunk@2044

VEX/priv/guest_arm_toIR.c

index 3e3bd1d76c91155483687eb4684f8401df9922a7..53bb0126c4281cdc4aaa0f8cfaa9111f83caf802 100644 (file)
@@ -17484,6 +17484,26 @@ DisResult disInstr_THUMB_WRK (
       }
    }
 
+   /* -------------- v7 barrier insns -------------- */
+   if (INSN0(15,0) == 0xF3BF && (INSN1(15,0) & 0xFF0F) == 0x8F0F) {
+      switch (INSN1(7,4)) {
+         case 0x4: /* DSB */
+            stmt( IRStmt_MBE(Imbe_Fence) );
+            DIP("DSB\n");
+            goto decode_success;
+         case 0x5: /* DMB */
+            stmt( IRStmt_MBE(Imbe_Fence) );
+            DIP("DMB\n");
+            goto decode_success;
+         case 0x6: /* ISB */
+            stmt( IRStmt_MBE(Imbe_Fence) );
+            DIP("ISB\n");
+            goto decode_success;
+         default:
+            break;
+      }
+   }
+
    /* ----------------------------------------------------------- */
    /* -- VFP (CP 10, CP 11) instructions (in Thumb mode)       -- */
    /* ----------------------------------------------------------- */