X86: Use IsSquashAfter if an instruction could affect fetch translation.
authorGabe Black <gblack@eecs.umich.edu>
Sun, 14 Aug 2011 06:03:11 +0000 (23:03 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 14 Aug 2011 06:03:11 +0000 (23:03 -0700)
commit1b9de61a710f6cb125a63e347500155fe2330b55
treedb6d7f09db3ba05c21d092f0433af2b2154ed36e
parente0043f8dbe926ed5bfadb504b0a69b1a1fbfcede
X86: Use IsSquashAfter if an instruction could affect fetch translation.

Control register operands are set up so that writing to them is serialize
after, serialize before, and non-speculative. These are probably overboard,
but they should usually be safe. Unfortunately there are times when even these
aren't enough. If an instruction modifies state that affects fetch, later
serialized instructions which come after it might have already gone through
fetch and decode by the time it commits. These instructions may have been
translated incorrectly or interpretted incorrectly and need to be destroyed.
This change modifies instructions which will or may have this behavior so that
they use the IsSquashAfter flag when necessary.
src/arch/x86/isa/operands.isa