Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ; SET UP OS TASK
  2.  
  3.         mov  esi,boot_setostask
  4.         call boot_log
  5.  
  6. ;        mov eax, fpu_data
  7. ;        mov  dword [SLOT_BASE+APPDATA.fpu_state], eax
  8. ;        mov  dword [SLOT_BASE+APPDATA.fpu_handler], 0
  9. ;        mov  dword [SLOT_BASE+APPDATA.sse_handler], 0
  10.  
  11.         ; name for OS/IDLE process
  12.  
  13.         mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
  14.         mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
  15.         mov edi, [os_stack]
  16.         mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
  17.         add edi, RING0_STACK_SIZE
  18.         mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
  19.  
  20.         mov esi, fpu_data
  21.         mov ecx, 512/4
  22.         cld
  23.         rep movsd
  24.  
  25.         mov dword [SLOT_BASE+256+APPDATA.fpu_handler], 0
  26.         mov dword [SLOT_BASE+256+APPDATA.sse_handler], 0
  27.  
  28.         mov ebx, [def_cursor]
  29.         mov dword [SLOT_BASE+256+APPDATA.cursor], ebx
  30.  
  31.         mov ebx, SLOT_BASE+256+APP_OBJ_OFFSET
  32.         mov  dword [SLOT_BASE+256+APPDATA.fd_obj], ebx
  33.         mov  dword [SLOT_BASE+256+APPDATA.bk_obj], ebx
  34.  
  35.         ; task list
  36.         mov  [TASK_DATA+TASKDATA.wnd_number], 1 ; on screen number
  37.         mov  [TASK_DATA+TASKDATA.pid], 1        ; process id number
  38.         mov  [TASK_DATA+TASKDATA.mem_start], 0  ; process base address
  39.  
  40.         mov  edi,tss_data+tss_step
  41.         mov ecx, (tss_step)/4
  42.         xor eax, eax
  43.         cld
  44.         rep stosd
  45.  
  46.         mov  edi,tss_data+tss_step
  47.         mov  [edi+TSS._ss0], os_data
  48.         mov  eax,cr3
  49.         mov  [edi+TSS._cr3],eax
  50.         mov  [edi+TSS._eip],osloop
  51.         mov  [edi+TSS._eflags],dword 0x11202 ; sti and resume
  52.         mov eax, [os_stack]
  53.         add eax, RING0_STACK_SIZE
  54.         mov  [edi+TSS._esp], eax
  55.         mov  [edi+TSS._cs],os_code
  56.         mov  [edi+TSS._ss],os_data
  57.         mov  [edi+TSS._ds],os_data
  58.         mov  [edi+TSS._es],os_data
  59.         mov  [edi+TSS._fs],os_data
  60.         mov  [edi+TSS._gs],os_data
  61.  
  62.         mov  ax,tss0
  63.         ltr  ax
  64.