ENTRY (_start) SECTIONS { . = 0x1000; /* The kernel will live at 12MB in the virtual address space, */ /* which will be mapped to 0 in the physical address space. */ /* Note that we page-align the sections. */ .early.text ALIGN (4K) : { *(.early.text) } .early.rodata ALIGN (4K) : { *(.early.rodata) } .early.data ALIGN (4K) : { *(.early.data) } .early.bss ALIGN (4K) : { *(.early.bss) } . += 0xC00000; /* Add a symbol that indicates the start address of the kernel. */ .text ALIGN (4K) : AT (ADDR (.text) - 0xC00000) { *(.text) } .rodata ALIGN (4K) : AT (ADDR (.rodata) - 0xC00000) { *(.rodata) } .data ALIGN (4K) : AT (ADDR (.data) - 0xC00000) { *(.data) } .bss ALIGN (4K) : AT (ADDR (.bss) - 0xC00000) { *(COMMON) *(.bss) } }