Hello, Maybe this is very basic question.
I saw some documents for doing this from the osdev-wiki.
but it couldn't solve my question clearly, so i write this article to get some more help from os developer.
I want my kernel be reside on above 3GB area of the virtual memory, but I loaded my kernel at 0x7e0000 before enable paging. so I write page entry to map 0x7e0000 to 3GB area, but it makes problem, because I compiled my kernel and applied ld-script to execute them on 0x7e0000, so my codes are references 0x7e00 to jump or do something else. after enable the paging, that address is not valid any more, if I jump to 3GB area, every codes are references invalid address (0x7e0000... they didn't forget the old address)
I try to find the solution from other OSes..
One way is to make one more step to load kernel, boot stage -> "setup" stage -> kernel, the setup stage will initialize the page table and load a kernel to the virtual address(3GB). yes, it can solve my problem.
But I think there is more general way to solve it, without using well-known boot-loader (such as lilo, grub, because I already wrote my own boot-loader, I don't want change it to other).
could you help me?
How did you enable the paging for your kernel at lower addresses? or how did you move the kernel to more high address range?
Thank you.
- nicesj.park
