I have some problem in my kernel development.
I just began to os development, and I've aleady finished bootloader and protected mode...
Now I'm gonna enable the paging...
So I've made simple dummy code for paging... But When I boot it, computer is restared...
What problem is it? please help me... thanks for your reguard...
Code: Select all
DWORD swapper_pg_dir[1024];
DWORD pg0[1024];
void init_page(void)
{
init_page_table();
init_page_directory();
page_enable((DWORD)swapper_pg_dir);
}
void init_page_table(void)
{
DWORD i;
for (i=0; i<PAGE_TABLE_ENTRY; i++) {
pg0[i] = (DWORD)((i * 0x1000) + 0x7);
}
}
void init_page_directory(void)
{
DWORD i;
for (i=0; i<PAGE_DIRECTORY_ENTRY; i++) {
swapper_pg_dir[i] = (DWORD)0;
}
swapper_pg_dir[0] = (DWORD)((DWORD)pg0 + 0x7);
}
void page_enable(DWORD pdbr)
{
__asm {
mov eax, pdbr
mov cr3, eax
mov eax, cr0
or eax, 0x80000000
mov cr0, eax
}
}