I am not quite sure about setting the TSS. I filled just the CR3 and ESP0 field. should i fill SS0 and anyother fields.
A dumb question : What will be on the kernel stack?
Code: Select all
initialize_task:
mov ebp,esp
push dword 0x0202
push dword 0x8
push dword user1_task
push dword 0
push dword 0
push dword 0
push dword 0
push dword 0
push dword 0
push dword 0
push dword 0
push dword 0x10
push dword 0x10
push dword 0x10
push dword 0x10
mov [process_esp],esp
mov [process_ss],dword 0x10
mov [process_kstack],ebp
mov [process_ustack],dword USER_STACK
mov eax,sys_tss
mov word [gdt_TSS+2],ax
shr eax,16
mov byte [gdt_TSS+4],al
mov byte [gdt_TSS+7],ah
mov eax,cr3
mov [sys_tss_cr3],eax
mov eax,esp
mov [sys_tss_esp],ebp
mov ax,TSS_SEL
ltr ax
pop gs
pop fs
pop es
pop ds
popad
iret