Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 172 → Rev 188

/kernel/trunk/core/memory.inc
52,14 → 52,12
add eax, 0x00400000
mov dword [sys_pgdir+12], eax
 
mov dword [sys_pgdir+0x600], sys_master_tab+PG_SW
mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW
 
mov ecx, [pg_data.kernel_tables]
sub ecx, 4
mov eax, tmp_page_tab+PG_SW
mov edi, sys_pgdir+16
mov esi, sys_master_tab+16
 
jmp .map_kernel_tabs
.no_PSE:
82,15 → 80,12
mov ecx, [pg_data.kernel_tables]
mov eax, tmp_page_tab+PG_SW
mov edi, sys_pgdir
mov esi, sys_master_tab
 
.map_kernel_tabs:
 
mov [edi], eax
mov [esi], eax
add eax, 0x1000
add edi, 4
add esi, 4
dec ecx
jnz .map_kernel_tabs
 
106,8 → 101,8
cld
rep stosd
 
mov dword [sys_pgdir+0x600], sys_master_tab+PG_SW
mov dword [sys_master_tab+0x600], sys_master_tab+PG_SW
mov dword [sys_pgdir+0x600], sys_pgdir+PG_SW
 
ret
endp
 
201,7 → 196,6
.find:
mov edx, [count]
mov edi, ecx
 
.match:
cmp byte [ecx], 0xFF
jne .next
272,15 → 266,13
endp
 
align 4
proc map_page_table stdcall,page_dir:dword, lin_addr:dword, phis_addr:dword
proc map_page_table stdcall, lin_addr:dword, phis_addr:dword
mov ebx, [lin_addr]
shr ebx, 22
mov eax, [phis_addr]
and eax, not 0xFFF
or eax, PG_UW ;+PG_NOCACHE
mov ecx, [page_dir]
mov dword [ecx+ebx*4], eax
mov dword [master_tab+ebx*4], eax
mov dword [current_pgdir+ebx*4], eax
mov eax, [lin_addr]
shr eax, 10
add eax, pages_tab
339,7 → 331,7
 
@@:
call alloc_page
stdcall map_page_table,sys_pgdir, esi, eax
stdcall map_page_table, esi, eax
add esi, 0x00400000
dec edi
jnz @B
457,15 → 449,12
 
xchg esi, edi
 
mov eax, cr3
stdcall map_page,[tmp_task_pdir],eax,dword PG_SW+PG_NOCACHE
 
@@:
call alloc_page
test eax, eax
jz .exit
 
stdcall map_page_table,[tmp_task_pdir], edi, eax
stdcall map_page_table, edi, eax
 
push edi
shr edi, 10
479,8 → 468,6
add edi, 0x00400000
cmp edi, esi
jb @B
 
stdcall map_page,[tmp_task_pdir],dword 0,dword PG_UNMAP
.grow:
pop edi
pop esi
519,7 → 506,7
ret
endp
 
align 16
align 4
proc page_fault_handler
pushad
 
527,10 → 514,14
mov eax, cr2
push eax
push ds
push es
 
mov ax, 0x10
mov ds, ax
mov es, ax
 
inc [pg_data.pages_faults]
 
mov ebx, [ebp-4]
 
cmp ebx, 0xe0000000
539,6 → 530,9
cmp ebx, 0x60400000
jae .user_space
 
cmp ebx, master_tab+0x1000
jae .alloc
 
cmp ebx, 0x60000000
jae .tab_space
 
545,8 → 539,6
jmp .kernel_space
 
.user_space:
inc [pg_data.pages_faults]
 
shr ebx, 12
mov ecx, ebx
shr ecx, 10
557,7 → 549,7
mov eax, [pages_tab+ebx*4]
test eax, 2
jz .fail
 
.alloc:
call alloc_page
and eax, eax
jz .exit
564,16 → 556,14
 
stdcall map_page,[ebp-4],eax,dword PG_UW
 
mov esi, [ebp-4]
and esi, 0xFFFFF000
mov edi, [ebp-4]
and edi, 0xFFFFF000
mov ecx, 1024
xor eax, eax
@@:
mov [esi], eax
add esi, 4
dec ecx
jnz @B
cld
rep stosd
.exit:
pop es
pop ds
mov esp, ebp
popad
580,6 → 570,7
add esp, 4
iretd
.fail:
pop es
pop ds
mov esp, ebp
popad
592,52 → 583,29
iretd
 
.kernel_space:
shr ebx, 12
mov eax, [pages_tab+ebx*4]
shr ebx, 10
mov eax, [master_tab+ebx*4]
 
pop ds
mov esp, ebp
popad
add esp, 4
iretd
 
; shr ebx, 12
; mov eax, [pages_tab+ebx*4]
; shr ebx, 10
; mov eax, [master_tab+ebx*4]
jmp .exit
.old_addr:
shr ebx, 12
; shr ebx, 12
; mov eax, [pages_tab+ebx*4]
shr ebx, 10
mov eax, [master_tab+ebx*4]
 
pop ds
mov esp, ebp
popad
add esp, 4
iretd
 
; shr ebx, 10
; mov eax, [master_tab+ebx*4]
jmp .exit
.lfb_addr:
shr ebx, 22
;mov ecx, [sys_page_dir]
mov eax, [master_tab+ebx*4]
 
pop ds
mov esp, ebp
popad
add esp, 4
iretd
 
; shr ebx, 22
; ;mov ecx, [sys_page_dir]
; mov eax, [master_tab+ebx*4]
jmp .exit
.tab_space:
shr ebx, 12
; shr ebx, 12
; mov eax, [pages_tab+ebx*4]
shr ebx, 10
;mov ecx, [sys_page_dir]
mov eax, [master_tab+ebx*4]
 
pop ds
mov esp, ebp
popad
add esp, 4
iretd
; shr ebx, 10
; ;mov ecx, [sys_page_dir]
; mov eax, [master_tab+ebx*4]
jmp .exit
endp
 
align 4
758,7 → 726,6
call set_ipc_buff
mov [esp+36], eax
ret
 
@@:
cmp eax, 2
jne @f
765,7 → 732,6
stdcall sys_ipc_send, ebx, ecx, edx
mov [esp+36], eax
ret
 
@@:
xor eax, eax
not eax
945,7 → 911,7
jb .fail
ja @f
 
stdcall init_heap, ebx
call init_heap
mov [esp+36], eax
ret
@@:
958,7 → 924,7
@@:
cmp eax, 13
ja @f
 
add ebx, new_app_base
stdcall user_free, ebx
mov [esp+36], eax
ret
983,6 → 949,8
cmp eax, 16
ja @f
 
test ebx, ebx
jz .fail
add ebx, new_app_base
cmp ebx, new_app_base
jb .fail
1299,7 → 1267,7
tmp_task_ptab rd 1
tmp_task_data rd 1
 
current_pdir rd 1
; current_pdir rd 1
 
fpu_data rd 1
fdd_buff rd 1