These three patches add support for x86 XSAVE/XRSTOR signal frames in
linux-user emulation. This ensures that signals save and restore the
extended save states as well.
For 32-bit emulation not even FXSAVE was used, even though the
signal frame supports it. Therefore, patch 2 extends 32-bit emulation
to use FXSAVE/FXRSTOR if the FXSR bit is set in CPUID. If it is not
set, QEMU will use FSAVE/FRSTOR as usual; note that recent builds of
glibc most likely will check for FXSR bit even on 32-bit builds, and
will refuse to start with a "CPU ISA level is lower than required"
error.
Paolo
Paolo Bonzini (3):
linux-user: i386/signal: move fpstate at the end of the 32-bit frames
linux-user: i386/signal: support FXSAVE fpstate on 32-bit emulation
linux-user: i386/signal: support XSAVE/XRSTOR for signal frame fpstate
linux-user/i386/signal.c | 227 ++++++++++++++++++++++++++---------
target/i386/cpu.c | 2 +-
target/i386/cpu.h | 3 +
target/i386/tcg/fpu_helper.c | 64 ++++++----
4 files changed, 210 insertions(+), 86 deletions(-)
--
2.37.3