Hey everyone!
This is not as much a problem as it is a question of understanding... Here's my problem:
I use GRUB as a bootloader, and it works fine... I have it load my kernel (ELF) at the 1MB mark, and setup a flat memory model in protected mode. The way I see it, I should be able to make the kernel think its located at 0xC0000000 by setting the paging mechanism right... I have paging enabled, and as fare as I can see, its the offset into the page directory (and where that points to) that lets me map 0xC0000000 to 0x100000 (eventually).
But wont that mean I need to link my kernel differently than I do now? I just use standard linking with LD, like no virtual memory address specification. Some of the documents I have seen on this topic just take care of it by adding the virtual address to the LD script, but when I try that - GRUB refuses to load my kernel (and with just cause, I dont have 3GB of memory, and it seems to want to load it there!). I know this may sound a little confusing, and thats excactly how I feel... But its the same idea as Tim Robinson has in his Memory Management 1 article... I suppose what I'm asking is, how the ..... do I implement a change like that, without changing my flat segmentation.... (will I need to use the LDT!??)
I hope you guys can shed some light on my situation, I'm stomped....
Thanks in advance - Kristian Frederiksen