reactos/ntoskrnl
George Bișoc 064a35dc67
[NTOS:KE] Fully implement FPU Save/Restore mechanism
This commit fully implements the inner logic of KeSaveFloatingPointState and KeRestoreFloatingPointState routines. On ReactOS we're currently simply doing a FNSAVE operation whereas on Windows it is a lot more than that.

On Windows Server 2003 the logic more or less goes like this. In order to save the FPU state the NPX state of the current thread has to be checked first, that is, if NPX is loaded and currently charged for the current thread then the system will acquire the NPX registers actively present. From that point it performs either a FNSAVE or FXSAVE
if FX is actually supported. Otherwise the control word and MXCsr registers are obtained.

FXSAVE/FNSAVE operation is done solely if the FX save area is held up in a pool allocation. Pool allocation occurs if it's been found out that the NPX IRQL of the thread is not the same as the current thread which from where it determines if the interrupt level is APC then allocate some pool memory and hold the save area there, otherwise
the save area in question is grabbed from the current processor control region. If NPX is not loaded for the current thread then the FPU state is obtained from the NPX frame.

In our case we'll be doing something way simpler. Only do a FXSAVE/FNSAVE directly of the FPU state registers, in this way we are simplifying the code and the actual logic of Save/Restore mechanism.
2022-05-24 18:39:45 +02:00
..
cache [NTOS:MM] Fix another instance of reentrant spinlock acquisition 2021-06-29 11:49:20 +02:00
cc [NTOS:CC] Unintialize private cache maps before purging the cache section 2022-02-02 17:45:59 +01:00
config [NTOS:CM] Adapt cmboot.c for usage in NT/ReactOS bootloader. 2022-04-16 18:37:45 +02:00
dbgk [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ex [NTOS:EX] Only set WakeTimer-related status if timer handle is valid. CORE-18133 2022-04-03 20:13:09 -04:00
fsrtl [NTOS:FSRTL] Assign the buffer length to ThisBufferLength field 2022-01-11 10:11:08 +01:00
fstub [NTOS:IO/FSTUB] Fix the determination of 'SingleDisk' in IoGetBootDiskInformation(). 2021-06-11 02:21:47 +02:00
inbv [NTOS:INBV] Code refactoring: Move all the boot animation-specific code out of inbv.c and into the new bootanim.c file. 2022-02-13 21:29:14 +01:00
include [NTOS:KE] Implement the internal FPU state context structure 2022-05-24 18:39:45 +02:00
io [NTOS:PNP] Misc IoInvalidateDeviceState fixes 2022-05-24 05:04:11 +03:00
kd [NTOS:KD][NTOS:KD64][NTOS:KDBG] Fix IRQL & spinlock use 2021-06-29 11:49:20 +02:00
kd64 [NTOS:KD64,KE] IRQL is automatically adjusted during calls to KdEnterDebugger() and KdExitDebugger(). (#3942) 2021-09-12 18:20:32 +02:00
kdbg [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ke [NTOS:KE] Fully implement FPU Save/Restore mechanism 2022-05-24 18:39:45 +02:00
lpc [NTOS:LPC] NtReplyWaitReceivePortEx returns the correct TotalLength for connect messages 2021-11-24 18:59:16 +01:00
mm [NTOS:MM] Fix memory leak in MiMapViewOfDataSection 2022-05-18 12:31:31 +02:00
ntkrnlmp [CMAKE] Use the "kernel" module type for ntoskrnl and ntkrnlmp 2021-03-23 11:18:43 +01:00
ob [NTOS:OB] Specify the query security descriptor tag when freeing the allocation 2022-05-08 19:16:34 +02:00
po [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
ps [NTOS:PS] Use quota types on process quota querying 2022-01-11 11:21:15 +01:00
rtl [NTOSKRNL] Regroup the pool allocation tags in one dedicated place 2021-12-27 18:57:03 +01:00
se [NTOS:SE] Replace a bunch of RtlCopyLuid() calls into direct assignations (#4523) 2022-05-23 19:30:37 +02:00
tests Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
vdm [FORMATTING][NTOS][HAL][DRIVERS][SDK] Fix trailing spaces 2021-06-11 15:33:08 +03:00
vf Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
wmi [REACTOS] Fix traces with missing arguments. 2021-11-21 12:57:35 -05:00
CMakeLists.txt [CMAKE] Fixes for clang-cl build 2021-09-14 17:58:23 +03:00
guid.c [NTOSKRNL] Rewrite IoAssignDriveLetters to make NT5 compliant 2019-10-21 18:28:40 +02:00
KrnlFun.c Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
ntdll.S Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
ntos.cmake [NTOS] Don't define _IN_KERNEL_ globally for the kernel, but just where it's needed: when including regstr.h. 2022-05-07 18:38:35 +02:00
ntoskrnl.rc [NTOS:INBV] Refactor boot screen code and resources (#1649) 2019-08-20 01:52:25 +02:00
ntoskrnl.spec [ARM] Fix some compilation errors for ARM 2021-09-09 19:40:20 +03:00
sysfuncs.lst Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00