|
From: <sv...@va...> - 2006-08-28 13:17:11
|
Author: sewardj
Date: 2006-08-28 14:17:08 +0100 (Mon, 28 Aug 2006)
New Revision: 1644
Log:
Merge r1633 (fix for: amd64->IR: unhandled instruction "pushfq")
Modified:
branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
Modified: branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-08-28 13:15:19 U=
TC (rev 1643)
+++ branches/VEX_3_2_BRANCH/priv/guest-amd64/toIR.c 2006-08-28 13:17:08 U=
TC (rev 1644)
@@ -12756,8 +12756,10 @@
case 0x9C: /* PUSHF */ {
/* Note. There is no encoding for a 32-bit pushf in 64-bit
mode. So sz=3D=3D4 actually means sz=3D=3D8. */
+ /* 24 July 06: has also been seen with a redundant REX prefix,
+ so must also allow sz=3D=3D8. */
if (haveF2orF3(pfx)) goto decode_failure;
- vassert(sz =3D=3D 2 || sz =3D=3D 4);
+ vassert(sz =3D=3D 2 || sz =3D=3D 4 || sz =3D=3D 8);
if (sz =3D=3D 4) sz =3D 8;
if (sz !=3D 8) goto decode_failure; // until we know a sz=3D=3D2 t=
est case exists
=20
|