Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 429 → Rev 430

/kernel/branches/flat_kernel/kernel.asm
11,7 → 11,7
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
$Revision:$
; $Revision$
 
include "proc32.inc"
include "kglobals.inc"
203,7 → 203,7
mov cr3, eax
 
mov eax,cr0
or eax,CR0_PG
or eax,CR0_PG+CR0_WP
mov cr0,eax
 
lgdt [gdts]
372,12 → 372,37
.noSYSCALL:
; -----------------------------------------
 
; LOAD IDT
 
call build_interrupt_table
lidt [idtreg]
 
call init_kernel_heap
stdcall kernel_alloc, 0x2000
stdcall kernel_alloc, RING0_STACK_SIZE+512
mov [os_stack_seg], eax
 
lea esp, [eax+RING0_STACK_SIZE]
 
mov [tss._ss0], os_stack
mov [tss._esp0], esp
mov [tss._esp], esp
mov [tss._cs],os_code
mov [tss._ss],os_stack
mov [tss._ds],app_data
mov [tss._es],app_data
mov [tss._fs],app_data
mov [tss._gs],app_data
mov [tss._io],128
;Add IO access table - bit array of permitted ports
mov edi, tss._io_map_0
xor eax, eax
not eax
mov ecx, 8192/4
rep stosd ; access to 4096*8=65536 ports
 
mov ax,tss0
ltr ax
 
mov [LFBSize], 0x800000
call init_mtrr
 
385,7 → 410,10
call init_fpu
call init_malloc
 
stdcall alloc_kernel_space, 0x4F000
stdcall alloc_kernel_space, 0x51000
mov [default_io_map], eax
 
add eax, 0x2000
mov [ipc_tmp], eax
mov ebx, 0x1000
 
497,9 → 525,6
 
call build_scheduler ; sys32.inc
 
; LOAD IDT
lidt [idtreg]
 
mov esi,boot_devices
call boot_log
call detect_devices
565,6 → 590,10
mov dword [SLOT_BASE+256+APPDATA.pl0_stack], edi
add edi, 0x2000-512
mov dword [SLOT_BASE+256+APPDATA.fpu_state], edi
mov dword [SLOT_BASE+256+APPDATA.io_map],\
(tss._io_map_0-OS_BASE+PG_MAP)
mov dword [SLOT_BASE+256+APPDATA.io_map+4],\
(tss._io_map_1-OS_BASE+PG_MAP)
 
mov esi, fpu_data
mov ecx, 512/4
587,31 → 616,6
mov [TASK_DATA+TASKDATA.pid], 1 ; process id number
mov [TASK_DATA+TASKDATA.mem_start], 0 ; process base address
 
mov edi,tss_data+tss_step
mov ecx, (tss_step)/4
xor eax, eax
cld
rep stosd
 
mov edi,tss_data
mov [edi+TSS._ss0], os_stack
mov eax,cr3
mov [edi+TSS._cr3],eax
mov [edi+TSS._eip],osloop
mov [edi+TSS._eflags],dword 0x1202 ; sti and resume
mov eax, [os_stack_seg]
add eax, 0x2000-512
mov [edi+TSS._esp], eax
mov [edi+TSS._cs],os_code
mov [edi+TSS._ss],os_stack ;os_stack
mov [edi+TSS._ds],app_data ;os_data
mov [edi+TSS._es],app_data ;os_data
mov [edi+TSS._fs],app_data ;os_data
mov [edi+TSS._gs],app_data ;os_data
 
mov ax,tss0
ltr ax
 
call init_cursors
mov eax, [def_cursor]
mov [SLOT_BASE+APPDATA.cursor],eax
667,6 → 671,18
movsd
call load_skin
 
;protect io permission map
 
mov esi, [default_io_map]
stdcall map_page,esi,(tss._io_map_0-OS_BASE), PG_MAP
add esi, 0x1000
stdcall map_page,esi,(tss._io_map_1-OS_BASE), PG_MAP
 
stdcall map_page,tss._io_map_0,\
(tss._io_map_0-OS_BASE), PG_MAP
stdcall map_page,tss._io_map_1,\
(tss._io_map_1-OS_BASE), PG_MAP
 
; LOAD FIRST APPLICATION
cli
cmp byte [BOOT_VAR+0x9030],1
3727,25 → 3743,23
 
pushad
 
mov edi,[CURRENT_TASK]
imul edi,tss_step
add edi,tss_data+128
; add edi,128
mov edi, tss._io_map_0
 
mov ecx,eax
and ecx,7 ; offset in byte
; mov ecx,eax
; and ecx,7 ; offset in byte
 
shr eax,3 ; number of byte
add edi,eax
; shr eax,3 ; number of byte
; add edi,eax
 
mov ebx,1
shl ebx,cl
; mov ebx,1
; shl ebx,cl
 
cmp ebp,0 ; enable access - ebp = 0
jne siar1
 
not ebx
and [edi],byte bl
; not ebx
; and [edi],byte bl
btr [edi], eax
 
popad
 
3753,7 → 3767,8
 
siar1:
 
or [edi],byte bl ; disable access - ebp = 1
bts [edi], eax
; or [edi],byte bl ; disable access - ebp = 1
 
popad
 
Property changes:
Added: svn:keywords
+Rev
\ No newline at end of property