fixed kernel heap manager broken in rev. 1090
git-svn-id: svn://kolibrios.org@1130 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
a0d587989d
commit
c752107a02
@ -91,7 +91,7 @@ macro remove_from_used op
|
|||||||
align 4
|
align 4
|
||||||
proc init_kernel_heap
|
proc init_kernel_heap
|
||||||
|
|
||||||
mov ecx, 64/4
|
mov ecx, 64
|
||||||
mov edi, mem_block_list
|
mov edi, mem_block_list
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
cld
|
cld
|
||||||
@ -140,9 +140,7 @@ proc init_kernel_heap
|
|||||||
|
|
||||||
mov ecx, [pg_data.kernel_pages]
|
mov ecx, [pg_data.kernel_pages]
|
||||||
shl ecx, 12
|
shl ecx, 12
|
||||||
neg ecx
|
sub ecx, HEAP_BASE+4096*MEM_BLOCK_SIZE
|
||||||
add ecx, [MEM_AMOUNT]
|
|
||||||
sub ecx, 4096*MEM_BLOCK_SIZE
|
|
||||||
mov [heap_size], ecx
|
mov [heap_size], ecx
|
||||||
mov [heap_free], ecx
|
mov [heap_free], ecx
|
||||||
mov [ebx+block_size], ecx
|
mov [ebx+block_size], ecx
|
||||||
@ -155,7 +153,7 @@ proc init_kernel_heap
|
|||||||
mov byte [mem_block_map], 0xFC
|
mov byte [mem_block_map], 0xFC
|
||||||
and [heap_mutex], 0
|
and [heap_mutex], 0
|
||||||
mov [heap_blocks], 4095
|
mov [heap_blocks], 4095
|
||||||
mov [free_blocks], 4095
|
mov [free_blocks], 4094
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
@ -107,7 +107,16 @@ proc init_mem
|
|||||||
and edx, not 4095
|
and edx, not 4095
|
||||||
mov [tmp_page_tabs], edx
|
mov [tmp_page_tabs], edx
|
||||||
|
|
||||||
mov edx, (((sys_pgmap-OS_BASE) + 0xFFFFFF) and not 0xFFFFFF) shr 12
|
mov edx, esi
|
||||||
|
cmp edx, (OS_BASE/4096)
|
||||||
|
jbe @F
|
||||||
|
mov edx, (OS_BASE/4096)
|
||||||
|
jmp .set
|
||||||
|
@@:
|
||||||
|
cmp edx, (HEAP_BASE+HEAP_MIN_SIZE)/4096
|
||||||
|
jae .set
|
||||||
|
mov edx, (HEAP_BASE+HEAP_MIN_SIZE)/4096
|
||||||
|
.set:
|
||||||
mov [pg_data.kernel_pages-OS_BASE], edx
|
mov [pg_data.kernel_pages-OS_BASE], edx
|
||||||
shr edx, 10
|
shr edx, 10
|
||||||
mov [pg_data.kernel_tables-OS_BASE], edx
|
mov [pg_data.kernel_tables-OS_BASE], edx
|
||||||
|
Loading…
Reference in New Issue
Block a user