Hello!
Do you mean line 462 in revision 1.17? If so then my "fix for SMP" has not fixed the problem I guess. It should be like this: When a thread uses the FPU for the first time after it was switched to the KiHandleFpuFault ors the NpxState with NPX_STATE_DIRTY and unsets TS in cr0, then the thread can happily use the FPU. When the thread is switched away from it is checked wether the FPU state is dirty and if it is dirty the state is saved and set to NPX_STATE_VALID (so NPX_STATE_DIRTY is unset there) and then TS in cr0 is set again, so only after NPX_STATE_DIRTY was unset KiHandleFpuFault should be called. If the dirty flag is still set it means that the FPU context was not saved where it should have been saved (i.e. when setting TS in cr0)
Have you already commited your SMP fixes? Then I could try to get reactos with SMP running with bochs and look at it myself.
- blight
Hartmut Birr wrote:
Hi,
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