From 9623e3cbe84c0cc6495c7846dfc42010b2c1424c Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Tue, 12 Oct 2004 00:33:30 +0000 Subject: [PATCH] Added complete defintion of FX_SAVE_AREA and moved it to fpu.h instead of ps.h. svn path=/trunk/; revision=11278 --- reactos/ntoskrnl/include/internal/i386/fpu.h | 37 ++++++++++++++++++++ reactos/ntoskrnl/include/internal/i386/ps.h | 9 ++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/reactos/ntoskrnl/include/internal/i386/fpu.h b/reactos/ntoskrnl/include/internal/i386/fpu.h index 9c38d532f11..e0b3a5a3a07 100644 --- a/reactos/ntoskrnl/include/internal/i386/fpu.h +++ b/reactos/ntoskrnl/include/internal/i386/fpu.h @@ -25,4 +25,41 @@ extern ULONG HardwareMathSupport; VOID KiCheckFPU(VOID); +typedef struct _FNSAVE_FORMAT { + ULONG ControlWord; + ULONG StatusWord; + ULONG TagWord; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + UCHAR RegisterArea[80]; +} FNSAVE_FORMAT, *PFNSAVE_FORMAT; + +typedef struct _FXSAVE_FORMAT { + USHORT ControlWord; + USHORT StatusWord; + USHORT TagWord; + USHORT ErrorOpcode; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + ULONG MXCsr; + ULONG MXCsrMask; + UCHAR RegisterArea[128]; + UCHAR Reserved3[128]; + UCHAR Reserved4[224]; + UCHAR Align16Byte[8]; +} FXSAVE_FORMAT, *PFXSAVE_FORMAT; + +typedef struct _FX_SAVE_AREA { + union { + FNSAVE_FORMAT FnArea; + FXSAVE_FORMAT FxArea; + } U; + ULONG NpxSavedCpu; + ULONG Cr0NpxState; +} FX_SAVE_AREA, *PFX_SAVE_AREA; + #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_FPU_H */ diff --git a/reactos/ntoskrnl/include/internal/i386/ps.h b/reactos/ntoskrnl/include/internal/i386/ps.h index 019f284a1e5..2c4979ca98b 100644 --- a/reactos/ntoskrnl/include/internal/i386/ps.h +++ b/reactos/ntoskrnl/include/internal/i386/ps.h @@ -47,6 +47,8 @@ #ifndef __ASM__ +#include "fpu.h" + #pragma pack(push,4) // Fixme: Use correct types? @@ -54,13 +56,6 @@ typedef struct _KPROCESSOR_STATE { PCONTEXT ContextFrame; PVOID SpecialRegisters; } KPROCESSOR_STATE; - -// Fixme: Use correct union for Fn/Fx Save Area? -typedef struct _FX_SAVE_AREA { - UCHAR FnFxSaveArea[0x208]; - ULONG NpxSavedCpu; - ULONG Cr0NpxState; -} FX_SAVE_AREA, *PFX_SAVE_AREA; /* ProcessoR Control Block */ typedef struct _KPRCB {