|
From: <sv...@va...> - 2012-08-23 19:47:18
|
sewardj 2012-08-23 20:47:05 +0100 (Thu, 23 Aug 2012)
New Revision: 2477
Log:
Re-enable 'prefetch m8' and 'prefetchw m8'. Fixes #305321.
Modified files:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c (+16 -17)
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2012-08-23 20:00:06 +01:00 (rev 2476)
+++ trunk/priv/guest_amd64_toIR.c 2012-08-23 20:47:05 +01:00 (rev 2477)
@@ -19744,6 +19744,22 @@
DIP("ud2\n");
return delta;
+ case 0x0D: /* 0F 0D /0 -- prefetch mem8 */
+ /* 0F 0D /1 -- prefetchw mem8 */
+ if (have66orF2orF3(pfx)) goto decode_failure;
+ modrm = getUChar(delta);
+ if (epartIsReg(modrm)) goto decode_failure;
+ if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1)
+ goto decode_failure;
+ addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
+ delta += alen;
+ switch (gregLO3ofRM(modrm)) {
+ case 0: DIP("prefetch %s\n", dis_buf); break;
+ case 1: DIP("prefetchw %s\n", dis_buf); break;
+ default: vassert(0); /*NOTREACHED*/
+ }
+ return delta;
+
case 0x1F:
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
@@ -26941,24 +26957,7 @@
/* =-=-=-=-=-=-=-=-=- Jcond d32 -=-=-=-=-=-=-=-=-= */
/* =-=-=-=-=-=-=-=-=- PREFETCH =-=-=-=-=-=-=-=-=-= */
- case 0x0D: /* 0F 0D /0 -- prefetch mem8 */
- /* 0F 0D /1 -- prefetchw mem8 */
- if (have66orF2orF3(pfx)) goto decode_failure;
- modrm = getUChar(delta);
- if (epartIsReg(modrm)) goto decode_failure;
- if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1)
- goto decode_failure;
- addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
- delta += alen;
-
- switch (gregLO3ofRM(modrm)) {
- case 0: DIP("prefetch %s\n", dis_buf); break;
- case 1: DIP("prefetchw %s\n", dis_buf); break;
- default: vassert(0); /*NOTREACHED*/
- }
- break;
-
/* =-=-=-=-=-=-=-=-=- RDTSC -=-=-=-=-=-=-=-=-=-=-= */
/* =-=-=-=-=-=-=-=-=- SETcc Eb =-=-=-=-=-=-=-=-=-= */
|