forked from KolibriOS/kolibrios
align heap_base on 4Mb border
move sys_pgmap at the top of kernel memory git-svn-id: svn://kolibrios.org@513 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
0b7151a256
commit
4c1ad6f2c7
@ -266,6 +266,9 @@ TMP_STACK_TOP equ 0x003EC00
|
||||
FONT_II equ (OS_BASE+0x003EC00)
|
||||
FONT_I equ (OS_BASE+0x003F600)
|
||||
DRIVE_DATA equ (OS_BASE+0x0040000)
|
||||
|
||||
sys_pgdir equ (OS_BASE+0x0050000)
|
||||
|
||||
SLOT_BASE equ (OS_BASE+0x0080000)
|
||||
|
||||
;unused
|
||||
@ -304,9 +307,10 @@ end virtual
|
||||
WinMapAddress equ (OS_BASE+0x043F000)
|
||||
display_data equ (OS_BASE+0x043F000)
|
||||
|
||||
tmp_page_tab equ 0x057F000;
|
||||
sys_pgmap equ (OS_BASE+0x057F000)
|
||||
|
||||
HEAP_BASE equ (OS_BASE+tmp_page_tab)
|
||||
|
||||
HEAP_BASE equ (OS_BASE+0x0800000)
|
||||
HEAP_MIN_SIZE equ 0x01000000
|
||||
|
||||
page_tabs equ 0xFDC00000
|
||||
@ -316,9 +320,6 @@ master_tab equ (page_tabs+ (page_tabs shr 10)) ;0xFDFF70000
|
||||
|
||||
LFB_BASE equ 0xFE000000
|
||||
|
||||
sys_pgdir equ (OS_BASE+0x00050000)
|
||||
sys_pgmap equ (OS_BASE+0x00052000)
|
||||
|
||||
|
||||
new_app_base equ 0;
|
||||
|
||||
|
@ -12,7 +12,7 @@ full_file_name_table dd 0 ; 㪠
|
||||
; ¯¥à¥¡¨à ¥â ¯® ä ©«ã ¢ ਠâë § ¬¥
|
||||
proc full_file_name stdcall,sourc,dest
|
||||
locals
|
||||
tmpsrc rb 60 ; ¢à¥¬¥®¥ åà ¥¨¥ ¯à¥®¡à §®¢ ¨ï
|
||||
tmpsrc rb 260 ; ¢à¥¬¥®¥ åà ¥¨¥ ¯à¥®¡à §®¢ ¨ï
|
||||
endl
|
||||
pushad
|
||||
mov esi,[sourc]
|
||||
|
@ -40,6 +40,10 @@ proc init_mem
|
||||
shr eax, 3
|
||||
mov [pg_data.pagemap_size-OS_BASE], eax
|
||||
|
||||
add eax, (sys_pgmap-OS_BASE)+4095
|
||||
and eax, not 4095
|
||||
mov [tmp_page_tabs], eax
|
||||
|
||||
cmp edx, (OS_BASE/4096)
|
||||
jbe @F
|
||||
mov edx, (OS_BASE/4096)
|
||||
@ -74,21 +78,23 @@ proc init_mem
|
||||
or ebx, CR4_PGE
|
||||
@@:
|
||||
mov cr4, ebx
|
||||
sub [pg_data.kernel_tables-OS_BASE], 1
|
||||
dec [pg_data.kernel_tables-OS_BASE]
|
||||
|
||||
mov [edx], eax
|
||||
add eax, 0x00400000
|
||||
; mov [edx+4], eax
|
||||
add edx, 4
|
||||
|
||||
mov eax, 0x400000+PG_SW
|
||||
mov ecx, (tmp_page_tab-0x400000)/4096
|
||||
mov ecx, [tmp_page_tabs]
|
||||
sub ecx, 0x400000
|
||||
shr ecx, 12 ;ecx/=4096
|
||||
jmp .map_low
|
||||
.no_PSE:
|
||||
mov eax, PG_SW
|
||||
mov ecx, tmp_page_tab/4096
|
||||
mov ecx, [tmp_page_tabs]
|
||||
shr ecx, 12
|
||||
.map_low:
|
||||
mov edi, tmp_page_tab
|
||||
mov edi, [tmp_page_tabs]
|
||||
@@: ;
|
||||
stosd
|
||||
add eax, 0x1000
|
||||
@ -101,7 +107,8 @@ proc init_mem
|
||||
rep stosd
|
||||
|
||||
mov ecx, [pg_data.kernel_tables-OS_BASE]
|
||||
mov eax, tmp_page_tab+PG_SW
|
||||
mov eax, [tmp_page_tabs]
|
||||
or eax, PG_SW
|
||||
mov edi, edx
|
||||
|
||||
.map_kernel_tabs:
|
||||
@ -131,29 +138,23 @@ align 4
|
||||
proc init_page_map
|
||||
|
||||
mov edi, sys_pgmap-OS_BASE
|
||||
mov ecx, ((HEAP_BASE-OS_BASE)/4096)/32 ;384/4
|
||||
mov ebx, ecx
|
||||
xor eax,eax
|
||||
mov ecx, [pg_data.pagemap_size-OS_BASE]
|
||||
shr ecx, 2
|
||||
or eax, -1
|
||||
cld
|
||||
rep stosd
|
||||
|
||||
not eax
|
||||
mov ecx, [pg_data.pagemap_size-OS_BASE]
|
||||
sub ecx, ebx
|
||||
shr ecx, 2
|
||||
rep stosd
|
||||
|
||||
lea edi, [sys_pgmap-OS_BASE+ebx*4] ;+384
|
||||
mov ecx, [tmp_page_tabs]
|
||||
mov edx, [pg_data.pages_count-OS_BASE]
|
||||
mov ecx, [pg_data.kernel_tables-OS_BASE]
|
||||
add ecx, ((HEAP_BASE-OS_BASE)/4096) and 31
|
||||
sub edx, (HEAP_BASE-OS_BASE)/4096
|
||||
shr ecx, 12
|
||||
add ecx, [pg_data.kernel_tables-OS_BASE]
|
||||
sub edx, ecx
|
||||
mov [pg_data.pages_free-OS_BASE], edx
|
||||
|
||||
xor eax, eax
|
||||
mov edi, sys_pgmap-OS_BASE
|
||||
mov ebx, ecx
|
||||
shr ecx, 5
|
||||
xor eax, eax
|
||||
rep stosd
|
||||
|
||||
not eax
|
||||
@ -169,7 +170,6 @@ proc init_page_map
|
||||
mov [page_end-OS_BASE], ebx
|
||||
|
||||
mov [pg_data.pg_mutex-OS_BASE], 0
|
||||
|
||||
ret
|
||||
endp
|
||||
|
||||
|
@ -251,7 +251,8 @@ B32:
|
||||
lgdt [gdts]
|
||||
jmp pword os_code:high_code
|
||||
|
||||
|
||||
align 4
|
||||
tmp_page_tabs dd ?
|
||||
use16
|
||||
org $-0x10000
|
||||
include "boot/shutdown.inc" ; shutdown or restart
|
||||
|
@ -128,9 +128,8 @@
|
||||
; 0x80040000 -> 4FFFF data of retrieved disks and partitions (Mario79)
|
||||
|
||||
; 0x80050000 -> 50FFF main page directory
|
||||
; 0x80050200 -> 5FFFF pages bitmap
|
||||
; 0x80051000 -> 7FFFF free (188 Kb)
|
||||
|
||||
; 0x80060000 -> 7FFFF free (128 Kb)
|
||||
; 0x80080000 -> 8FFFF additional app info, in 256 byte steps - 256 entries
|
||||
;
|
||||
; 00 11db name of app running
|
||||
@ -205,29 +204,28 @@
|
||||
; 0x802E0000 -> 2EFFFF irq data area
|
||||
; 0x802F0000 -> 2FFFFF low memory save
|
||||
;
|
||||
; 0x80300000 -> 45FFFF background image, max 1,375 M
|
||||
; 0x80300000 -> 400000 hd cache
|
||||
|
||||
; 0x80400000 -> 41FFFF tcp memory 128 Kb
|
||||
; 0x80420000 -> 427FFF tcp memory 32 Kb
|
||||
;
|
||||
; 0x80460000 -> 5FFFFF display info
|
||||
;
|
||||
; 0x80600000 -> 6FFFFF hd cache
|
||||
;
|
||||
; 0x80700000 -> 71ffff tcp memory 128 Kb
|
||||
; 0x80720000 -> 75ffff free (256 kb)
|
||||
;
|
||||
; 0x80760000 -> 76ffff !vrr driver
|
||||
; 0x80770000 -> 777fff tcp memory 32 Kb
|
||||
;
|
||||
; 0x80780000 -> 0x80782FFF draw data - 256 entries
|
||||
; 0x80428000 -> 42FFFF !vrr driver 32 Kb
|
||||
|
||||
; 0x80430000 -> 477FFF skin data
|
||||
|
||||
; 0x80438000 -> 43AFFF draw data - 256 entries
|
||||
; 00 dword draw limit - x start
|
||||
; 04 dword draw limit - y start
|
||||
; 08 dword draw limit - x end
|
||||
; 0C dword draw limit - y end
|
||||
|
||||
; 0x8043BF80 -> 43BFFF TSS 128 bytes
|
||||
; 0x8043C000 -> 43DFFF IO map for (8192*8)=65536 ports
|
||||
|
||||
; 0x8043F000 -> 57EFFF display info
|
||||
; 0x8057F000 -> 58FFFF page map max 128 Kb
|
||||
;
|
||||
; 0x80783F80 -> 0x80783FFF TSS 128 bytes
|
||||
;
|
||||
; 0x80784000 -> 0x80785FFF IO map for (8192*8)=65536 ports
|
||||
;
|
||||
; 0x80786000 -> kernel heap
|
||||
; 0x80800000 -> kernel heap
|
||||
; 0x81FFFFFF heap min limit
|
||||
; 0xFDBFFFFF heap max limit
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user