|
From: <sv...@va...> - 2013-12-09 12:54:17
|
Author: mjw
Date: Mon Dec 9 12:54:06 2013
New Revision: 2800
Log:
Bug 328100 - XABORT not implemented.
XABORT can be called even when there is no current transaction.
In such a case XABORT acts as a NOP. Implement xabort as nop.
Modified:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Mon Dec 9 12:54:06 2013
@@ -20251,7 +20251,7 @@
return delta;
}
/* BEGIN HACKY SUPPORT FOR xbegin */
- if (modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 4
+ if (opc == 0xC7 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 4
&& (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
delta++; /* mod/rm byte */
d64 = getSDisp(4,delta);
@@ -20270,6 +20270,16 @@
return delta;
}
/* END HACKY SUPPORT FOR xbegin */
+ /* BEGIN HACKY SUPPORT FOR xabort */
+ if (opc == 0xC6 && modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 1
+ && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
+ delta++; /* mod/rm byte */
+ abyte = getUChar(delta); delta++;
+ /* There is never a real transaction in progress, so do nothing. */
+ DIP("xabort $%d", (Int)abyte);
+ return delta;
+ }
+ /* END HACKY SUPPORT FOR xabort */
goto decode_failure;
case 0xC8: /* ENTER */
|