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