ENTRY(_start) KERNEL_LMA = 1M; KERNEL_VMA = 0xFFFFFFFF80000000; SECTIONS { . = KERNEL_LMA; .boot.text ALIGN(4K) : { *(.boot.text) *(.boot.rodata) } .boot.bss ALIGN(4K) : { *(.boot.bss) } . += KERNEL_VMA; __start = .; __pstart = . - KERNEL_VMA; .text ALIGN(4K) : AT(ADDR(.text) - KERNEL_VMA) { *(.text) } .data ALIGN(4K) : AT(ADDR(.data) - KERNEL_VMA) { _data = .; *(.data) } .data.percpu ALIGN(4K) : AT(ADDR(.data.percpu) - KERNEL_VMA) { __percpu_start = .; *(.data.percpu) __percpu_end = .; } .initcall ALIGN(4K) : AT(ADDR(.initcall) - KERNEL_VMA) { __initcall0_start = .; *(.initcall0.init) __initcall1_start = .; *(.initcall1.init) __initcall2_start = .; *(.initcall2.init) __initcall3_start = .; *(.initcall3.init) __initcall4_start = .; *(.initcall4.init) __initcall5_start = .; *(.initcall5.init) __initcall6_start = .; *(.initcall6.init) __initcall7_start = .; *(.initcall7.init) __initcall8_start = .; *(.initcall8.init) __initcall_end = .; } .eh_frame ALIGN(4K) : AT(ADDR(.eh_frame) - KERNEL_VMA) { _ehframe = .; *(.eh_frame) } .bss ALIGN(4K) : AT(ADDR(.bss) - KERNEL_VMA) { _bss = .; *(.bss) */ /* * You usually need to include generated COMMON symbols * under kernel BSS section or use gcc's -fno-common */ *(COMMON) } __end = .; __pend = . - KERNEL_VMA; /DISCARD/ : { *(.comment) } }