
The kernel is now no longer identity mapped to the bottom 8MiB of memory, and is now mapped at the higher address of `0xc0000000`. The lower ~1MiB of memory (from GRUB's mmap), however is still identity mapped to provide an easy way for the kernel to get physical pages for things such as DMA etc. These could later be mapped to the higher address too, as I'm not too sure how to go about doing this elegantly without a lot of address subtractions.
35 lines
456 B
Text
35 lines
456 B
Text
ENTRY(start)
|
|
|
|
SECTIONS
|
|
{
|
|
. = 0xc0100000;
|
|
|
|
.text ALIGN(4K) : AT(ADDR(.text) - 0xc0000000)
|
|
{
|
|
Arch/i386/Boot/boot.ao
|
|
*(.multiboot)
|
|
*(.page_tables)
|
|
*(.text)
|
|
*(.text.startup)
|
|
}
|
|
|
|
.rodata ALIGN(4K) : AT(ADDR(.rodata) - 0xc0000000)
|
|
{
|
|
start_ctors = .;
|
|
*(.ctors)
|
|
end_ctors = .;
|
|
|
|
*(.rodata)
|
|
}
|
|
|
|
.data ALIGN(4K) : AT(ADDR(.data) - 0xc0000000)
|
|
{
|
|
*(.data)
|
|
}
|
|
|
|
.bss ALIGN(4K) : AT(ADDR(.bss) - 0xc0000000)
|
|
{
|
|
*(COMMON)
|
|
*(.bss)
|
|
}
|
|
}
|