x86: Add support for maintaining the x87 tag word
authorAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 18 Jun 2013 14:36:08 +0000 (16:36 +0200)
committerAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 18 Jun 2013 14:36:08 +0000 (16:36 +0200)
commitd06064c38613662dfbf68a701052278b4018de8c
treecc7870da633caf1c52abbd624c37754fe5a99b52
parenta8e8c4f433fb3cce354950ba72136b84abb78015
x86: Add support for maintaining the x87 tag word

The current implementation of the x87 never updates the x87 tag
word. This is currently not a big issue since the simulated x87 never
checks for stack overflows, however this becomes an issue when
switching between a virtualized CPU and a simulated CPU. This
changeset adds support, which is enabled by default, for updating the
tag register to every floating point microop that updates the stack
top using the spm mechanism.

The new tag words is generated by the helper function
X86ISA::genX87Tags(). This function is currently limited to flagging a
stack position as valid or invalid and does not try to distinguish
between the valid, zero, and special states.
src/arch/x86/faults.cc
src/arch/x86/isa/microops/fpop.isa
src/arch/x86/utility.cc
src/arch/x86/utility.hh