[ros-dev] Re: [ros-diffs] [CVS reactos] - Saved the state of the fpu at a win32 call and restored the state

Hartmut Birr hartmut.birr at gmx.de
Sun Nov 28 00:03:24 CET 2004


I've made this changes, because syssetup does always crash ros in
KiHandleFpuFault line #462 on my smp machine. The crash is triggered from
fxsave in tskswitch.S after a win32 callback. I revert my changes.

- Hartmut  

> -----Original Message-----
> From: ros-dev-bounces at reactos.com 
> [mailto:ros-dev-bounces at reactos.com] On Behalf Of Gregor Anich
> Sent: Saturday, November 27, 2004 10:57 PM
> To: ReactOS Development List
> Subject: [ros-dev] Re: [ros-diffs] [CVS reactos] - Saved the 
> state of the fpu at a win32 call and restored the state
> Hi Hartmut!
> You have changed the w32 callback to save the FPU state, this 
> is wrong I 
> think!
> I was wondering too wether it should be saved so GvG 
> suggested to check 
> myself and I modified our winhello app...
> It prints out the FPU control word, calls CreateWindow and printf the 
> FPU control word again.
> In the callback for the WM_CREATE message (produced by 
> CreateWindow) it 
> also prints the control word, then modifies it (and prints 
> the modified one)
> This is the output on windows2000:
> Original FPU control word: 0x8001f
> WM_CREATE: Original FPU control word: 0x8001f
> WM_CREATE: Modified FPU control word: 0xa001f
> FPU control word after CreateWindow: 0xa001f
> Of course I have attached the program.
> I am not sure but I think in the KiClearFloatingPointState which you 
> have added you have to set KPCR->NpxThread to NULL if it's 
> CurrentThread 
> before you do the fn/xsave because it could raise a delayed FPU 
> exception (which will be ignored when KPCR->CurrentThread is 
> NULL and be 
> delivered when the saved FPU state is restored for the thread)
> I think I have made the same mistake in tskswitch.S - I am 
> pretty sure 
> it has to be fixed there because we don't want a FPU exception to be 
> raised while we are in a cli/sti block and switching to another task.
> - blight

More information about the Ros-dev mailing list