x86: Fix re-entrancy problems in x87 store instructions
authorAndreas Sandberg <andreas@sandberg.pp.se>
Mon, 30 Sep 2013 09:51:25 +0000 (11:51 +0200)
committerAndreas Sandberg <andreas@sandberg.pp.se>
Mon, 30 Sep 2013 09:51:25 +0000 (11:51 +0200)
commitc299dcedc6d73aab56d9c659623d7112c2e9c4bb
tree64aa1c869f4505bb8306da124fb081a23ae51167
parent469f2e31cfb5b50c52888684e47289921d42292a
x86: Fix re-entrancy problems in x87 store instructions

X87 store instructions typically loads and pops the top value of the
stack and stores it in memory. The current implementation pops the
stack at the same time as the floating point value is loaded to a
temporary register. This will corrupt the state of the x87 stack if
the store fails. This changeset introduces a pop87 micro-instruction
that pops the stack and uses this instruction in the affected
macro-instructions to pop the stack after storing the value to memory.
src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
src/arch/x86/isa/microops/fpop.isa