|
From: <sv...@va...> - 2011-01-21 18:03:02
|
Author: sewardj
Date: 2011-01-21 18:02:54 +0000 (Fri, 21 Jan 2011)
New Revision: 2083
Log:
Add alignment checking for FXSAVE/FXRSTOR.
Modified:
trunk/priv/guest_x86_toIR.c
Modified: trunk/priv/guest_x86_toIR.c
===================================================================
--- trunk/priv/guest_x86_toIR.c 2011-01-21 17:51:44 UTC (rev 2082)
+++ trunk/priv/guest_x86_toIR.c 2011-01-21 18:02:54 UTC (rev 2083)
@@ -8095,6 +8095,7 @@
addr = disAMode ( &alen, sorb, delta+2, dis_buf );
delta += 2+alen;
+ gen_SEGV_if_not_16_aligned(addr);
DIP("fxsave %s\n", dis_buf);
@@ -8165,11 +8166,15 @@
addr = disAMode ( &alen, sorb, delta+2, dis_buf );
delta += 2+alen;
+ gen_SEGV_if_not_16_aligned(addr);
DIP("fxrstor %s\n", dis_buf);
/* Uses dirty helper:
- void x86g_do_FXRSTOR ( VexGuestX86State*, UInt ) */
+ VexEmWarn x86g_do_FXRSTOR ( VexGuestX86State*, UInt )
+ NOTE:
+ the VexEmWarn value is simply ignored (unlike for FRSTOR)
+ */
d = unsafeIRDirty_0_N (
0/*regparms*/,
"x86g_dirtyhelper_FXRSTOR",
|