|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v10 7/9] x86emul: support FNSTENV and FNSAVE
On 29.05.2020 16:08, Andrew Cooper wrote:
> On 25/05/2020 15:29, Jan Beulich wrote:
>> To avoid introducing another boolean into emulator state, the
>> rex_prefix field gets (ab)used to convey the real/VM86 vs protected mode
>> info (affecting structure layout, albeit not size) to x86_emul_blk().
>>
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>,
Thanks.
> with one suggestion.
>
>> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
>> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
>> @@ -856,6 +856,9 @@ struct x86_emulate_state {
>> enum {
>> blk_NONE,
>> blk_enqcmd,
>> +#ifndef X86EMUL_NO_FPU
>> + blk_fst, /* FNSTENV, FNSAVE */
>> +#endif
>> blk_movdir,
>> } blk;
>> uint8_t modrm, modrm_mod, modrm_reg, modrm_rm;
>> @@ -897,6 +900,50 @@ struct x86_emulate_state {
>> #define PTR_POISON NULL /* 32-bit builds are for user-space, so NULL is OK.
>> */
>> #endif
>>
>> +#ifndef X86EMUL_NO_FPU
>> +struct x87_env16 {
>> + uint16_t fcw;
>> + uint16_t fsw;
>> + uint16_t ftw;
>> + union {
>> + struct {
>> + uint16_t fip_lo;
>> + uint16_t fop:11, :1, fip_hi:4;
>> + uint16_t fdp_lo;
>> + uint16_t :12, fdp_hi:4;
>> + } real;
>> + struct {
>> + uint16_t fip;
>> + uint16_t fcs;
>> + uint16_t fdp;
>> + uint16_t fds;
>> + } prot;
>> + } mode;
>> +};
>> +
>> +struct x87_env32 {
>> + uint32_t fcw:16, :16;
>> + uint32_t fsw:16, :16;
>> + uint32_t ftw:16, :16;
>
> uint16_t fcw, :16;
> uint16_t fsw, :16;
> uint16_t ftw, :16;
>
> ?
You had suggested this before, and I did reply that my intention
was to have x87_env16 use uint16_t throughout, and x87_env32
uint32_t respectively for all its pieces. In the end it doesn't
make a difference, and hence this cosmetic aspect is what made
me pick one of the various possible options.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |