X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Fproc.asm;h=014cfed1cac482bce97c168e1c976cf7211cdf3f;hb=5473bdfc429d224c40e37ff7065a8dbad119fa1e;hp=74a25d46b18618c93a903a5d67c913d85fcef8b7;hpb=4c717bb526a0a7b1aa44ed7fc4f07a6b7da5d2f9;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/proc.asm b/Kernel/arch/x86/proc.asm index 74a25d46..014cfed1 100644 --- a/Kernel/arch/x86/proc.asm +++ b/Kernel/arch/x86/proc.asm @@ -55,11 +55,14 @@ SwitchTasks: ; Old IP mov eax, [esp+0x20+16] + test eax, eax + jz .nosave mov DWORD [eax], .restore ; Old SP mov eax, [esp+0x20+8] mov [eax], esp +.nosave: mov ecx, [esp+0x20+12] ; New IP mov eax, [esp+0x20+20] ; New CR3 mov esp, [esp+0x20+ 4] ; New SP @@ -376,4 +379,4 @@ User_Syscall_Exit: mov ebx, [esp+4] int 0xAC -; vim: ft=nasm, ts=8 +; vim: ft=nasm ts=8