X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Fproc.asm;h=014cfed1cac482bce97c168e1c976cf7211cdf3f;hb=5473bdfc429d224c40e37ff7065a8dbad119fa1e;hp=4e7d1604ac218217df778d2213a080c5bf7685e9;hpb=dcebc16c576aa98eb6a33047f4c4b2b69b30a1bc;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/proc.asm b/Kernel/arch/x86/proc.asm index 4e7d1604..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 @@ -162,8 +165,7 @@ SetAPICTimerCount: pop es pop ds popa - add esp, 4 ; CPU ID - ; No Error code / int num + add esp, 8 ; CPU ID / Error Code iret %endif ; -------------- @@ -376,3 +378,5 @@ User_Syscall_Exit: xor eax, eax mov ebx, [esp+4] int 0xAC + +; vim: ft=nasm ts=8