ENTRY(_start) KERNEL_PA = 0x40100000; KERNEL_VA = 0xFFFFFFFF80100000; PHDRS { text PT_LOAD FLAGS(5); /* Read | Execute */ data PT_LOAD FLAGS(6); /* Read | Write */ } SECTIONS { . = KERNEL_VA; _kernelStart = .; .text : AT(ADDR(.text) - KERNEL_VA + KERNEL_PA) { *(.text.boot) *(.text*) } :text . = ALIGN(8); .rodata : AT(ADDR(.rodata) - KERNEL_VA + KERNEL_PA) { *(.rodata*) } :text . = ALIGN(4096); .data : AT(ADDR(.data) - KERNEL_VA + KERNEL_PA) { *(.data*) } :data . = ALIGN(8); .bss : AT(ADDR(.bss) - KERNEL_VA + KERNEL_PA) { __bss_start = .; *(.bss*) *(COMMON) __bss_end = .; } :data . = ALIGN(4096); _kernelEnd = .; }