x86: fix FPU lazy swap
The ucontext->x86_fxsave is initialize as 512 bytes of zeros, but it is not a valid value to be set onto FPU registers, causing a General Protection Fault: Interrupt 0x0d (General Protection Fault) while handling 0x07 (Device not available) EAX=0012f4c0 ECX=001336e4 EDX=001334ac EBX=001336e0 ESP=00123784 EBP=001237c8 ESI=00000200 EDI=00000000 Error code=00000000 CR0=80010031 CR2=00000000 CR3=0012d000 CR4=000001e0 EIP=0000:80010031 EFLAGS=0012d000 <stack trace> 00000000 ??? </stack trace> Halting. So lets copy the initial state of FPU registers before FPU is used and set it as the initial state of FPU to new threads(coroutine).dev/timer
parent
56f5a836a8
commit
684b081a16
Loading…
Reference in New Issue