Mark Wielaard 745bd7
From ae58d7305de27aa96abf715456a07045018cda98 Mon Sep 17 00:00:00 2001
Mark Wielaard 745bd7
From: Mark Wielaard <mjw@redhat.com>
Mark Wielaard 745bd7
Date: Tue, 26 Nov 2013 22:49:55 +0100
Mark Wielaard 745bd7
Subject: [PATCH] Bug 328100 XABORT not implemented.
Mark Wielaard 745bd7
Mark Wielaard 745bd7
XABORT can be called even when there is no current transaction.
Mark Wielaard 745bd7
In such a case XABORT acts as a NOP. Implement xabort as nop.
Mark Wielaard 745bd7
---
Mark Wielaard 745bd7
 priv/guest_amd64_toIR.c | 10 ++++++++++
Mark Wielaard 745bd7
 1 file changed, 10 insertions(+)
Mark Wielaard 745bd7
Mark Wielaard 745bd7
diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c
Mark Wielaard 745bd7
index a17c8f4..7ea5748 100644
Mark Wielaard 745bd7
--- a/VEX/priv/guest_amd64_toIR.c
Mark Wielaard 745bd7
+++ b/VEX/priv/guest_amd64_toIR.c
Mark Wielaard 745bd7
@@ -20270,6 +20270,16 @@ Long dis_ESC_NONE (
Mark Wielaard 745bd7
          return delta;
Mark Wielaard 745bd7
       }
Mark Wielaard 745bd7
       /* END HACKY SUPPORT FOR xbegin */
Mark Wielaard 745bd7
+      /* BEGIN HACKY SUPPORT FOR xabort */
Mark Wielaard 745bd7
+      if (modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 1
Mark Wielaard 745bd7
+          && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
Mark Wielaard 745bd7
+         delta++; /* mod/rm byte */
Mark Wielaard 745bd7
+         abyte = getUChar(delta); delta++;
Mark Wielaard 745bd7
+         /* There is never a real transaction in progress, so do nothing. */
Mark Wielaard 745bd7
+         DIP("xabort $%d", (Int)abyte);
Mark Wielaard 745bd7
+         return delta;
Mark Wielaard 745bd7
+      }
Mark Wielaard 745bd7
+      /* END HACKY SUPPORT FOR xabort */
Mark Wielaard 745bd7
       goto decode_failure;
Mark Wielaard 745bd7
 
Mark Wielaard 745bd7
    case 0xC8: /* ENTER */
Mark Wielaard 745bd7
-- 
Mark Wielaard 745bd7
1.8.3.1
Mark Wielaard 745bd7