mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
linux-user: i386/signal: move fpstate at the end of the 32-bit frames
Recent versions of Linux moved the 32-bit fpstate towards the end of the frame, so that the variable-sized xsave data does not overwrite the (ABI-defined) extramask[] field. Follow suit in QEMU. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
37656470f6
commit
5154d35bed
1 changed files with 9 additions and 2 deletions
|
@ -163,9 +163,16 @@ struct sigframe {
|
||||||
abi_ulong pretcode;
|
abi_ulong pretcode;
|
||||||
int sig;
|
int sig;
|
||||||
struct target_sigcontext sc;
|
struct target_sigcontext sc;
|
||||||
struct target_fpstate fpstate;
|
/*
|
||||||
|
* The actual fpstate is placed after retcode[] below, to make
|
||||||
|
* room for the variable-sized xsave data. The older unused fpstate
|
||||||
|
* has to be kept to avoid changing the offset of extramask[], which
|
||||||
|
* is part of the ABI.
|
||||||
|
*/
|
||||||
|
struct target_fpstate fpstate_unused;
|
||||||
abi_ulong extramask[TARGET_NSIG_WORDS-1];
|
abi_ulong extramask[TARGET_NSIG_WORDS-1];
|
||||||
char retcode[8];
|
char retcode[8];
|
||||||
|
struct target_fpstate fpstate;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rt_sigframe {
|
struct rt_sigframe {
|
||||||
|
@ -175,8 +182,8 @@ struct rt_sigframe {
|
||||||
abi_ulong puc;
|
abi_ulong puc;
|
||||||
struct target_siginfo info;
|
struct target_siginfo info;
|
||||||
struct target_ucontext uc;
|
struct target_ucontext uc;
|
||||||
struct target_fpstate fpstate;
|
|
||||||
char retcode[8];
|
char retcode[8];
|
||||||
|
struct target_fpstate fpstate;
|
||||||
};
|
};
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue