/kernel/branches/kolibri_pe/boot/bootcode.inc |
---|
258,11 → 258,42 |
and ax, bx |
and dx, bx |
cmp ax, dx |
jnz cpugood |
mov si, not386 |
jz sayerr |
xor eax, eax |
cpuid |
cmp eax, 0 |
mov si, sz_nopse |
jbe sayerr |
mov eax, 1 |
cpuid |
bt edx, 3 |
mov si, sz_nopse |
jnc sayerr |
xor ebx, ebx |
mov es, bx |
mov edi, 0x9104 |
mov ecx, 20 |
mov edx, 0x534D4150 |
mov [es:0x9100], ebx |
mov eax, 0xe820 |
int 0x15 |
mov si, sz_nosmap |
jc sayerr |
cmp eax, 0x534D4150 |
je cpugood |
sayerr: |
call print |
jmp $ |
cpugood: |
push 0 |
/kernel/branches/kolibri_pe/boot/booteng.inc |
---|
13,7 → 13,10 |
$Revision$ |
sz_nosmap db 'No BIOS memory table. System halted.', 0 |
sz_nopse db 'Page size extensions not supported. System halted.', 0 |
d80x25_bottom: |
db 186,' KolibriOS is based on MenuetOS and comes with ABSOLUTELY ' |
db 'NO WARRANTY ',186 |
/kernel/branches/kolibri_pe/boot/bootru.inc |
---|
13,7 → 13,10 |
$Revision$ |
sz_nosmap db 'No BIOS memory table. System halted.', 0 |
sz_nopse db 'Page size extensions not supported. System halted.', 0 |
d80x25_bottom: |
db 186,' Kolibri OS ®á®¢ Menuet OS ¨ ¥ ¯à¥¤®áâ ¢«ï¥â ' |
db '¨ª ª¨å £ àa⨩. ',186 |
/kernel/branches/kolibri_pe/init.inc |
---|
12,40 → 12,13 |
MEM_WC equ 1 ;write combined memory |
MEM_UC equ 0 ;uncached memory |
align 4 |
proc mem_test |
mov eax, cr0 |
and eax, not (CR0_CD+CR0_NW) |
or eax, CR0_CD ;disable caching |
mov cr0, eax |
wbinvd ;invalidate cache |
xor edi, edi |
mov ebx, 'TEST' |
@@: |
add edi, 0x100000 |
xchg ebx, dword [edi] |
cmp dword [edi], 'TEST' |
xchg ebx, dword [edi] |
je @b |
mov [MEM_AMOUNT-OS_BASE], edi |
and eax, not (CR0_CD+CR0_NW) ;enable caching |
mov cr0, eax |
mov eax, edi |
ret |
endp |
align 4 |
proc init_mem |
mov ecx, [0x2F0000 + 0x9100] |
test ecx, ecx |
jz .nosmap |
mov esi, 0x2F0000 + 0x9104 |
xor eax, eax |
mov esi, 0x2F0000 + 0x9104 |
@@: |
cmp dword [esi+16], 1 |
jne .next |
58,13 → 31,9 |
add esi, 20 |
loop @B |
and eax, -4096 |
mov [MEM_AMOUNT-OS_BASE], eax |
jmp @F |
.nosmap: |
call mem_test |
mov eax, [MEM_AMOUNT-OS_BASE] |
@@: |
mov [pg_data.mem_amount-OS_BASE], eax |
shr eax, 12 |