Das ist der initialisierende Code:
paging_directory = (paging_directory_t)phys_alloc(PAGING_DIRECTORY_SIZE);
memset(paging_directory , 0 , BLOCK_SIZE);
paging_directory[PAGING_VIRTADDR >> PAGING_DIR_SHIFT] = (dword)paging_directory | PAGING_PRESENT | PAGING_WRITEABLE;
size_t kernel_size = ((dword)kernel_end - (dword)kernel_start) / BLOCK_SIZE;
map_paging_range(kernel_start , kernel_mem_start , PAGING_PRESENT | PAGING_WRITEABLE | PAGING_NOTTLB , kernel_size);
size_t video_size = 80 * 25 * 2 / BLOCK_SIZE + 1;
map_paging_range((physaddr_t)0xB8000 , (virtaddr_t)0xB8000 , PAGING_PRESENT | PAGING_WRITEABLE , video_size);
map_paging(paging_directory , paging_directory , PAGING_PRESENT | PAGING_WRITEABLE);
map_paging_range(bitmap_start , bitmap_start , PAGING_PRESENT | PAGING_WRITEABLE , bitmap_length / BLOCK_SIZE);
//enable paging
_write_cr3((dword)&paging_directory);
_write_cr0(_read_cr0() | 0x80000000);
Wieso soll cr3 aof 0x1000 zeigen?
Meintest du nicht er 0x1090?