OUTPUT_FORMAT(elf64-x86-64) ENTRY(_start) __kernel_vma = 0xFFFFFFFF80000000; __boot_pma = 1M; __stack_pma = 0x3FFFFF; __stack_size = 4096; __userspace_pma = 0x400000; PHDRS { boot PT_LOAD; kernel PT_LOAD; } SECTIONS { . = __boot_pma; .boot ALIGN(4096) : { *boot.o(.multiboot) *boot.o(.text) *trampoline.o(.text .text.* .data .data.* .rodata .rodata.* .bss) } :boot . += __kernel_vma; .text ALIGN(4096) : AT(ADDR(.text)-__kernel_vma) { *boot.o(.multiboot) *boot.o(.text) *(.text .text.*) *(.rodata .rodata.*) *(.data .data.*) }:kernel .bss ALIGN(4096) : AT(ADDR(.bss)-__kernel_vma) { __bss_start = .; *(.bss); __bss_end = .; *(COMMON); ASSERT( (. - ABSOLUTE(__kernel_vma)) < (ABSOLUTE(__stack_pma)-ABSOLUTE(__stack_size)), "No room for stack !!"); }:kernel /DISCARD/ : { *(.eh_frame) *(.comment) *(.note*) } }