Subversion Repositories Kolibri OS

Rev

Rev 419 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 419 Rev 420
Line 17... Line 17...
17
include "const.inc"
17
include "const.inc"
18
max_processes    equ   255
18
max_processes    equ   255
19
tss_step         equ   (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4
19
tss_step         equ   (128+8192) ; tss & i/o - 65535 ports, * 256=557056*4
Line 20... Line 20...
20
 
20
 
21
 
21
 
22
os_data        equ  os_data_l-gdts    ; GDTs
22
os_stack       equ  os_data_l-gdts    ; GDTs
23
os_code        equ  os_code_l-gdts
23
os_code        equ  os_code_l-gdts
24
graph_data     equ  3+graph_data_l-gdts
24
graph_data     equ  3+graph_data_l-gdts
25
tss0           equ  tss0_l-gdts
25
tss0           equ  tss0_l-gdts
Line 149... Line 149...
149
use32
149
use32
150
org $+0x10000
150
org $+0x10000
Line 151... Line 151...
151
 
151
 
152
align 4
152
align 4
153
B32:
153
B32:
154
           mov   ax,os_data        ; Selector for os
154
           mov   ax,os_stack       ; Selector for os
155
           mov   ds,ax
155
           mov   ds,ax
156
           mov   es,ax
156
           mov   es,ax
157
           mov   fs,ax
157
           mov   fs,ax
158
           mov   gs,ax
158
           mov   gs,ax
Line 212... Line 212...
212
 
212
 
Line 213... Line 213...
213
org OS_BASE+$
213
org OS_BASE+$
214
 
214
 
215
align 4
215
align 4
216
high_code:
-
 
217
           mov   ax,os_data
-
 
218
           mov   ds,ax
-
 
219
           mov   es,ax
216
high_code:
220
           mov   fs,ax
217
           mov   ax,os_stack
221
           mov   gs,ax
218
           mov   bx,app_data
Line -... Line 219...
-
 
219
           mov   ss,ax
-
 
220
           add esp, OS_BASE
-
 
221
 
-
 
222
           mov   ds,bx
-
 
223
           mov   es,bx
222
           mov   ss,ax
224
           mov   fs,bx
223
           add esp, OS_BASE
225
           mov   gs,bx
224
 
226
 
Line 225... Line 227...
225
           mov dword [sys_pgdir], 0
227
           mov dword [sys_pgdir], 0
Line 367... Line 369...
367
.noSYSCALL:
369
.noSYSCALL:
368
; -----------------------------------------
370
; -----------------------------------------
Line 369... Line 371...
369
 
371
 
370
           call init_kernel_heap
372
           call init_kernel_heap
371
           stdcall kernel_alloc, 0x2000
373
           stdcall kernel_alloc, 0x2000
-
 
374
           mov [os_stack_seg], eax
-
 
375
 
Line 372... Line 376...
372
           mov [os_stack], eax
376
           lea esp, [eax+RING0_STACK_SIZE]
373
 
377
 
Line 374... Line 378...
374
           mov [LFBSize], 0x800000
378
           mov [LFBSize], 0x800000
Line 550... Line 554...
550
 
554
 
Line 551... Line 555...
551
        ; name for OS/IDLE process
555
        ; name for OS/IDLE process
552
 
556
 
553
        mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
557
        mov dword [SLOT_BASE+256+APPDATA.app_name],   dword 'OS/I'
554
        mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
558
        mov dword [SLOT_BASE+256+APPDATA.app_name+4], dword 'DLE '
555
        mov edi, [os_stack]
559
        mov edi, [os_stack_seg]
556
        mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
560
        mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
Line 557... Line 561...
557
        add edi, 0x2000-512
561
        add edi, 0x2000-512
Line 581... Line 585...
581
        mov ecx, (tss_step)/4
585
        mov ecx, (tss_step)/4
582
        xor eax, eax
586
        xor eax, eax
583
        cld
587
        cld
584
        rep stosd
588
        rep stosd
Line 585... Line 589...
585
 
589
 
586
        mov  edi,tss_data+tss_step
590
        mov  edi,tss_data
587
        mov  [edi+TSS._ss0], os_data
591
        mov  [edi+TSS._ss0], os_stack
588
        mov  eax,cr3
592
        mov  eax,cr3
589
        mov  [edi+TSS._cr3],eax
593
        mov  [edi+TSS._cr3],eax
590
        mov  [edi+TSS._eip],osloop
594
        mov  [edi+TSS._eip],osloop
591
        mov  [edi+TSS._eflags],dword 0x11202 ; sti and resume
595
        mov  [edi+TSS._eflags],dword 0x1202 ; sti and resume
592
        mov eax, [os_stack]
596
        mov eax, [os_stack_seg]
593
        add eax, 0x2000-512
597
        add eax, 0x2000-512
594
        mov  [edi+TSS._esp], eax
598
        mov  [edi+TSS._esp], eax
595
        mov  [edi+TSS._cs],os_code
599
        mov  [edi+TSS._cs],os_code
596
        mov  [edi+TSS._ss],os_data
600
        mov  [edi+TSS._ss],os_stack  ;os_stack
597
        mov  [edi+TSS._ds],os_data
601
        mov  [edi+TSS._ds],app_data  ;os_data
598
        mov  [edi+TSS._es],os_data
602
        mov  [edi+TSS._es],app_data  ;os_data
599
        mov  [edi+TSS._fs],os_data
603
        mov  [edi+TSS._fs],app_data  ;os_data
Line 600... Line 604...
600
        mov  [edi+TSS._gs],os_data
604
        mov  [edi+TSS._gs],app_data  ;os_data
601
 
605
 
Line 602... Line 606...
602
        mov  ax,tss0
606
        mov  ax,tss0
Line 741... Line 745...
741
 
745
 
Line 742... Line 746...
742
        stdcall attach_int_handler, dword 1, irq1
746
        stdcall attach_int_handler, dword 1, irq1
743
 
747
 
744
;        mov    [dma_hdd],1
748
;        mov    [dma_hdd],1
Line 745... Line 749...
745
        cmp     [IDEContrRegsBaseAddr], 0
749
        cmp     [IDEContrRegsBaseAddr], 0
Line 746... Line 750...
746
        setnz   [dma_hdd]
750
;        setnz   [dma_hdd]
-
 
751
 
-
 
752
        stdcall init_uart_service, DRV_ENTRY
-
 
753
 
-
 
754
        sti
747
 
755
        call change_task
Line 748... Line 756...
748
        stdcall init_uart_service, DRV_ENTRY
756
 
Line 749... Line 757...
749
 
757
        jmp osloop