Introduce SIMD save area in place of FN/FX and use anonymous union inside FX_SAVE_AREA structure
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Rafal Kupiec 2023-03-15 22:19:18 +01:00
parent a8fa702b05
commit 3afbc7e419
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 6 additions and 20 deletions

View File

@ -180,21 +180,8 @@ typedef struct _FLOATING_SAVE_AREA
ULONG Cr0NpxState; ULONG Cr0NpxState;
} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
/* Data for FNSAVE/FRSTOR instructions structure definition */
typedef struct _FNSAVE_FORMAT
{
ULONG ControlWord;
ULONG StatusWord;
ULONG TagWord;
ULONG ErrorOffset;
ULONG ErrorSelector;
ULONG DataOffset;
ULONG DataSelector;
UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
} FNSAVE_FORMAT, *PFNSAVE_FORMAT;
/* Data for FXSAVE/FXRSTOR instructions structure definition */ /* Data for FXSAVE/FXRSTOR instructions structure definition */
typedef struct _FXSAVE_FORMAT typedef struct _SIMD_SAVE_AREA
{ {
USHORT ControlWord; USHORT ControlWord;
USHORT StatusWord; USHORT StatusWord;
@ -210,16 +197,16 @@ typedef struct _FXSAVE_FORMAT
UCHAR Reserved3[SIZE_OF_FX_REGISTERS]; UCHAR Reserved3[SIZE_OF_FX_REGISTERS];
UCHAR Reserved4[224]; UCHAR Reserved4[224];
UCHAR Align16Byte[8]; UCHAR Align16Byte[8];
} FXSAVE_FORMAT, *PFXSAVE_FORMAT; } SIMD_SAVE_AREA, *PSIMD_SAVE_AREA;
/* Floating save area structure definition */ /* Floating save area structure definition */
typedef struct _FX_SAVE_AREA typedef struct _FX_SAVE_AREA
{ {
union union
{ {
FNSAVE_FORMAT FnArea; FLOATING_SAVE_AREA FnArea;
FXSAVE_FORMAT FxArea; SIMD_SAVE_AREA FxArea;
} U; };
ULONG NpxSavedCpu; ULONG NpxSavedCpu;
ULONG Cr0NpxState; ULONG Cr0NpxState;
} FX_SAVE_AREA, *PFX_SAVE_AREA; } FX_SAVE_AREA, *PFX_SAVE_AREA;

View File

@ -23,9 +23,7 @@ typedef struct _CPU_IDENTIFICATION CPU_IDENTIFICATION, *PCPU_IDENTIFICATION;
typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS; typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS;
typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE; typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE;
typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
typedef struct _FNSAVE_FORMAT FNSAVE_FORMAT, *PFNSAVE_FORMAT;
typedef struct _FX_SAVE_AREA FX_SAVE_AREA, *PFX_SAVE_AREA; typedef struct _FX_SAVE_AREA FX_SAVE_AREA, *PFX_SAVE_AREA;
typedef struct _FXSAVE_FORMAT FXSAVE_FORMAT, *PFXSAVE_FORMAT;
typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE; typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE;
typedef struct _HARDWARE_PTE_PAE HARDWARE_PTE_PAE, *PHARDWARE_PTE_PAE; typedef struct _HARDWARE_PTE_PAE HARDWARE_PTE_PAE, *PHARDWARE_PTE_PAE;
typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR; typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR;
@ -42,6 +40,7 @@ typedef struct _KSWITCH_FRAME KSWITCH_FRAME, *PKSWITCH_FRAME;
typedef struct _KTHREAD_INIT_FRAME KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FRAME; typedef struct _KTHREAD_INIT_FRAME KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FRAME;
typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME; typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME;
typedef struct _KTSS KTSS, *PKTSS; typedef struct _KTSS KTSS, *PKTSS;
typedef struct _SIMD_SAVE_AREA SIMD_SAVE_AREA, *PSIMD_SAVE_AREA;
typedef struct _THREAD_ENVIRONMENT_BLOCK THREAD_ENVIRONMENT_BLOCK, *PTHREAD_ENVIRONMENT_BLOCK; typedef struct _THREAD_ENVIRONMENT_BLOCK THREAD_ENVIRONMENT_BLOCK, *PTHREAD_ENVIRONMENT_BLOCK;
#endif /* __XTDK_I686_XTSTRUCT_H */ #endif /* __XTDK_I686_XTSTRUCT_H */