Пожалуйста, подскажите что не так?
Код:
MBALIGN equ 1<<0
MEMINFO equ 1<<1
FLAGS equ MBALIGN | MEMINFO
MAGIC equ 0x1BADB002
CHECKSUM equ -(MAGIC + FLAGS)
; Some constants for loading higher half kernel
VM_BASE equ 0xC0000000
PDE_INDEX equ (VM_BASE >> 22)
PSE_BIT equ 0x00000010
PG_BIT equ 0x80000000
section .multiboot
align 4
dd MAGIC
dd FLAGS
dd CHECKSUM
section .data
align 4096
global TEMP_PAGE_DIRECTORY
TEMP_PAGE_DIRECTORY:
dd 0x00000083
times(PDE_INDEX - 1) dd 0
dd 0x00000083
times(1024 - PDE_INDEX - 1) dd 0
section .initial_stack, nobits
align 4
stack_bottom:
resb 104856
stack_top:
section .text
global kernel_entry
global low_kernel_entry
low_kernel_entry equ (kernel_entry - VM_BASE)
kernel_entry:
mov ecx, (TEMP_PAGE_DIRECTORY - VM_BASE)
mov cr3, ecx
mov ecx, cr4;
or ecx, PSE_BIT
mov cr4, ecx
mov ecx, cr0
or ecx, PG_BIT
mov cr0, ecx
lea ecx, [higher_half]
jmp ecx
higher_half:
mov dword[TEMP_PAGE_DIRECTORY], 0
invlpg[0]
mov esp, stack_top
extern kernel_early
push ebx
call kernel_early
loop:
jmp loop