Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 364 → Rev 365

/kernel/trunk/const.inc
230,7 → 230,7
 
HEAP_BASE equ 0x98B000
 
pages_tab equ 0x60000000
page_tabs equ 0x60000000
master_tab equ 0x60180000
current_pgdir equ 0x60180000
 
/kernel/trunk/core/heap.inc
640,7 → 640,7
mov ecx, eax
sub eax, 4096
or ecx, FREE_BLOCK
mov [pages_tab+esi], ecx
mov [page_tabs+esi], ecx
ret
.exit:
xor eax, eax
666,7 → 666,7
 
mov ebx, esi
shr ebx, 12
mov eax, [pages_tab+ebx*4]
mov eax, [page_tabs+ebx*4]
test eax, FREE_BLOCK
jz test_used
and eax, 0xFFFFF000
679,16 → 679,16
sub eax, ecx;
or eax, FREE_BLOCK
shr edx, 12
mov [pages_tab+edx*4], eax
mov [page_tabs+edx*4], eax
 
@@:
or ecx, USED_BLOCK
mov [pages_tab+ebx*4], ecx
mov [page_tabs+ebx*4], ecx
shr ecx, 12
dec ecx
inc ebx
@@:
mov dword [pages_tab+ebx*4], 2
mov dword [page_tabs+ebx*4], 2
inc ebx
dec ecx
jnz @B
730,7 → 730,7
xor ebx, ebx
sub esi, 4096
shr esi, 12
mov eax, [pages_tab+esi*4]
mov eax, [page_tabs+esi*4]
test eax, USED_BLOCK
jz .not_used
 
737,7 → 737,7
and eax, not 4095
mov ecx, eax
or eax, FREE_BLOCK
mov [pages_tab+esi*4], eax
mov [page_tabs+esi*4], eax
inc esi
sub ecx, 4096
shr ecx, 12
744,7 → 744,7
mov ebx, ecx
.release:
xor eax, eax
xchg eax, [pages_tab+esi*4]
xchg eax, [page_tabs+esi*4]
test eax, 1
jz @F
call free_page
765,7 → 765,7
shr esi, 12
shr edi, 12
@@:
mov eax, [pages_tab+esi*4]
mov eax, [page_tabs+esi*4]
test eax, USED_BLOCK
jz .test_free
shr eax, 12
780,7 → 780,7
cmp edx, edi
jae .exit
 
mov ebx, [pages_tab+edx*4]
mov ebx, [page_tabs+edx*4]
test ebx, USED_BLOCK
jz .next_free
 
791,11 → 791,11
.next_free:
test ebx, FREE_BLOCK
jz .err
and dword [pages_tab+edx*4], 0
and dword [page_tabs+edx*4], 0
add eax, ebx
and eax, not 4095
or eax, FREE_BLOCK
mov [pages_tab+esi*4], eax
mov [page_tabs+esi*4], eax
jmp @B
.exit:
xor eax, eax
/kernel/trunk/core/memory.inc
240,7 → 240,7
or eax, [flags]
mov ebx, [lin_addr]
shr ebx, 12
mov [pages_tab+ebx*4], eax
mov [page_tabs+ebx*4], eax
mov eax, [lin_addr]
invlpg [eax]
pop ebx
296,7 → 296,7
mov ebx, edi
shr ebx, 12
@@:
mov [pages_tab+ebx*4], eax
mov [page_tabs+ebx*4], eax
invlpg [edi]
add edi, edx
add eax, edx
323,7 → 323,7
mov edi, eax
 
shr esi, 10
add esi, pages_tab
add esi, page_tabs
 
mov ebp, [pg_data.pages_free]
mov ebx, [page_start]
368,7 → 368,7
mov dword [current_pgdir+ebx*4], eax
mov eax, [lin_addr]
shr eax, 10
add eax, pages_tab
add eax, page_tabs
invlpg [eax]
pop ebx
ret
439,7 → 439,7
mov eax, [LFBAddress]
mov esi, eax
shr esi, 10
add esi, pages_tab
add esi, page_tabs
or eax, PG_UW
mov ecx, [pg_count]
shr ecx, 2
488,10 → 488,10
shr edi, 12
shr esi, 12
@@:
mov eax, [pages_tab+0x00181000+edi*4]
mov eax, [page_tabs+0x00181000+edi*4]
test eax, 1
jz .next
mov dword [pages_tab+0x00181000+edi*4], 2
mov dword [page_tabs+0x00181000+edi*4], 2
mov ebx, edi
shl ebx, 12
invlpg [ebx+std_application_base_address]
535,7 → 535,7
 
push edi
shr edi, 10
add edi, pages_tab
add edi, page_tabs
mov ecx, 1024
xor eax, eax
cld
614,7 → 614,7
align 4
get_pg_addr:
shr eax, 12
mov eax, [pages_tab+eax*4]
mov eax, [page_tabs+eax*4]
and eax, 0xFFFFF000
ret
 
658,7 → 658,7
test edx, 1
jz .fail
 
mov eax, [pages_tab+ebx*4]
mov eax, [page_tabs+ebx*4]
test eax, 2
jz .fail
.alloc:
696,13 → 696,13
 
.kernel_space:
; shr ebx, 12
; mov eax, [pages_tab+ebx*4]
; mov eax, [page_tabs+ebx*4]
; shr ebx, 10
; mov eax, [master_tab+ebx*4]
jmp .exit
.old_addr:
; shr ebx, 12
; mov eax, [pages_tab+ebx*4]
; mov eax, [page_tabs+ebx*4]
; shr ebx, 10
; mov eax, [master_tab+ebx*4]
jmp .exit
713,7 → 713,7
jmp .exit
.tab_space:
; shr ebx, 12
; mov eax, [pages_tab+ebx*4]
; mov eax, [page_tabs+ebx*4]
; shr ebx, 10
; ;mov ecx, [sys_page_dir]
; mov eax, [master_tab+ebx*4]
940,7 → 940,7
mov edx, ebx
shr ebx, 12
xor eax, eax
mov [pages_tab+ebx*4], eax
mov [page_tabs+ebx*4], eax
invlpg [edx]
 
mov ebx, [ipc_pdir]
947,7 → 947,7
mov edx, ebx
shr ebx, 12
xor eax, eax
mov [pages_tab+ebx*4], eax
mov [page_tabs+ebx*4], eax
invlpg [edx]
 
mov ebx, [ipc_ptab]
954,7 → 954,7
mov edx, ebx
shr ebx, 12
xor eax, eax
mov [pages_tab+ebx*4], eax
mov [page_tabs+ebx*4], eax
invlpg [edx]
 
mov eax, [dst_slot]
/kernel/trunk/core/taskman.inc
421,7 → 421,7
 
mov edi, new_app_base
shr edi, 10
add edi, pages_tab
add edi, page_tabs
 
mov ecx, [app_tabs]
shl ecx, 10
435,8 → 435,8
mov edi, new_app_base
shr esi, 10
shr edi, 10
add esi, pages_tab
add edi, pages_tab
add esi, page_tabs
add edi, page_tabs
.remap:
lodsd
or eax, ebx ; force user level r/w access