Merge patches from JeremyF, to do lazy eflags updating:

- D flag is seperated from the rest (OSZCAP)

- Minimise transfers between real and simulated %eflags since these
  are very expensive.

61-special-d

Make the D flag special. Store it separately in the baseblock rather
than in EFLAGs. This is because it is used almost completely unlike
the other flags, and mashing them together just makes maintaining
eflags hard.

62-lazy-eflags

Implements lazy eflags save and restore. Helps a lot.

Hopefully more documentation to follow.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1346 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_include.h b/coregrind/vg_include.h
index 07b6ea5..b637e41 100644
--- a/coregrind/vg_include.h
+++ b/coregrind/vg_include.h
@@ -1413,6 +1413,9 @@
 extern UInt VG_(num_scheduling_events_MINOR);
 extern UInt VG_(num_scheduling_events_MAJOR);
 
+/* Insert and extract the D flag from eflags */
+UInt VG_(insertDflag)(UInt eflags, Int d);
+Int VG_(extractDflag)(UInt eflags);
 
 /* ---------------------------------------------------------------------
    Exports of vg_memory.c
@@ -1601,6 +1604,8 @@
 extern Int VGOFF_(m_fpustate);
 extern Int VGOFF_(m_eip);
 
+extern Int VGOFF_(m_dflag);	/* D flag is handled specially */
+
 extern Int VGOFF_(m_cs);
 extern Int VGOFF_(m_ss);
 extern Int VGOFF_(m_ds);