forked from KolibriOS/kolibrios
one old and stupid bug fixed
git-svn-id: svn://kolibrios.org@2350 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
84726c7e7b
commit
db3a775207
@ -78,24 +78,21 @@ proc init_mem
|
||||
mov [pg_data.mem_amount-OS_BASE], eax ; the true MEMTOP
|
||||
mov [UserDMAaddr-OS_BASE], eax
|
||||
|
||||
mov edx, esi ; edx will hold maximum allocatable address
|
||||
shr esi, 12
|
||||
mov [pg_data.pages_count-OS_BASE], esi ; max number of PTEs ?
|
||||
|
||||
shr edx, 12
|
||||
add edx, 31
|
||||
and edx, not 31
|
||||
mov edx, esi ; edx will hold maximum allocatable address
|
||||
shr edx, 3
|
||||
mov [pg_data.pagemap_size-OS_BASE], edx ; size of sys_pgmap structure
|
||||
|
||||
add edx, (sys_pgmap-OS_BASE)+4095
|
||||
and edx, not 4095
|
||||
mov [tmp_page_tabs], edx ; free zone to build PTEs
|
||||
mov [tmp_page_tabs], edx ; free zone to build PTEs for all available memory
|
||||
|
||||
mov edx, (HEAP_BASE-OS_BASE+HEAP_MIN_SIZE)/4096
|
||||
mov [pg_data.kernel_pages -OS_BASE], edx
|
||||
shr edx, 10
|
||||
mov [pg_data.kernel_tables-OS_BASE], edx
|
||||
mov [pg_data.kernel_tables-OS_BASE], edx ; number of Kernel PDEs needed
|
||||
|
||||
mov edx, (sys_pgdir-OS_BASE)+ 0x800 ; (0x800 = OS_BASE shr 20)
|
||||
|
||||
@ -136,62 +133,14 @@ endp
|
||||
|
||||
align 4
|
||||
proc init_page_map
|
||||
; mark all memory as unavailable
|
||||
; mark all memory as available
|
||||
mov edi, sys_pgmap-OS_BASE
|
||||
mov ecx, [pg_data.pagemap_size-OS_BASE]
|
||||
shr ecx, 2
|
||||
xor eax, eax
|
||||
mov eax, -1
|
||||
cld
|
||||
rep stosd
|
||||
|
||||
; scan through memory map and mark free areas as available
|
||||
mov ebx, BOOT_VAR-OS_BASE + 0x9104
|
||||
mov edx, [ebx-4]
|
||||
.scanmap:
|
||||
mov ecx, [ebx+8]
|
||||
shr ecx, 12 ; ecx = number of pages
|
||||
jz .next
|
||||
mov edi, [ebx]
|
||||
shr edi, 12 ; edi = first page
|
||||
mov eax, edi
|
||||
shr edi, 5
|
||||
shl edi, 2
|
||||
add edi, sys_pgmap-OS_BASE
|
||||
and eax, 31
|
||||
jz .startok
|
||||
add ecx, eax
|
||||
sub ecx, 32
|
||||
jbe .onedword
|
||||
push ecx
|
||||
mov ecx, eax
|
||||
or eax, -1
|
||||
shl eax, cl
|
||||
or [edi], eax
|
||||
add edi, 4
|
||||
pop ecx
|
||||
.startok:
|
||||
push ecx
|
||||
shr ecx, 5
|
||||
or eax, -1
|
||||
rep stosd
|
||||
pop ecx
|
||||
and ecx, 31
|
||||
neg eax
|
||||
shl eax, cl
|
||||
dec eax
|
||||
or [edi], eax
|
||||
jmp .next
|
||||
.onedword:
|
||||
add ecx, 32
|
||||
sub ecx, eax
|
||||
@@:
|
||||
bts [edi], eax
|
||||
inc eax
|
||||
loop @b
|
||||
.next:
|
||||
add ebx, 20
|
||||
dec edx
|
||||
jnz .scanmap
|
||||
|
||||
; mark kernel memory as allocated (unavailable)
|
||||
mov ecx, [tmp_page_tabs]
|
||||
|
Loading…
Reference in New Issue
Block a user