minor - commenting change
[tpg/acess2.git] / Kernel / arch / x86 / proc.asm
index 74a25d4..3de4e0a 100644 (file)
@@ -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
@@ -73,7 +76,6 @@ SwitchTasks:
        jmp ecx
 
 .restore:
-
        popa
        xor eax, eax
        ret
@@ -260,7 +262,7 @@ SpawnTask:
 .parent:
        ret
 
-; void Proc_ReturnToUser(void *Method, Uint Parameter)
+; void Proc_ReturnToUser(void *Method, Uint Parameter, tVAddr KernelStack)
 ; Calls a user fault handler
 ;
 [global Proc_ReturnToUser]
@@ -272,12 +274,8 @@ Proc_ReturnToUser:
        ; [EBP+12]: parameter
        ; [EBP+16]: kernel stack top
        
-       ;call Proc_GetCurThread
-       
-       ; EAX is the current thread
-       ;mov ebx, eax
-       ;mov eax, [ebx+12*4]    ; Get Kernel Stack
-       mov eax, [ebp+16]       ; Get Kernel Stack
+       ; Get kernel stack      
+       mov eax, [ebp+16]
        sub eax, KSTACK_USERSTATE_SIZE
        
        ;
@@ -343,10 +341,6 @@ Proc_ReturnToUser:
 
 [global GetCPUNum]
 GetCPUNum:     ; TODO: Store in debug registers
-;      xor eax, eax
-;      str ax
-;      sub ax, 0x30
-;      shr ax, 3       ; ax /= 8
        mov eax, dr1
        ret
 
@@ -376,4 +370,4 @@ User_Syscall_Exit:
        mov ebx, [esp+4]
        int 0xAC
 
-; vim: ft=nasm, ts=8
+; vim: ft=nasm ts=8

UCC git Repository :: git.ucc.asn.au