|
From: <sv...@va...> - 2010-09-24 23:48:37
|
Author: sewardj
Date: 2010-09-25 00:48:29 +0100 (Sat, 25 Sep 2010)
New Revision: 2044
Log:
Implement v7 barrier insns (DMB, DSB, ISB) in Thumb mode
(Peter Maydell, pet...@li...). Fixes #252253.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-09-24 23:35:59 UTC (rev 2043)
+++ trunk/priv/guest_arm_toIR.c 2010-09-24 23:48:29 UTC (rev 2044)
@@ -17484,6 +17484,26 @@
}
}
+ /* -------------- 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) -- */
/* ----------------------------------------------------------- */
|