|
From: <sv...@va...> - 2006-07-24 09:09:41
|
Author: sewardj
Date: 2006-07-24 10:09:36 +0100 (Mon, 24 Jul 2006)
New Revision: 1633
Log:
Allow a redundant REX prefix for pushfq. Fixes #130785.
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/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
--- trunk/priv/guest-amd64/toIR.c 2006-07-24 08:51:16 UTC (rev 1632)
+++ trunk/priv/guest-amd64/toIR.c 2006-07-24 09:09:36 UTC (rev 1633)
@@ -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
|