OUTPUT_FORMAT(binary) ENTRY(_start) SECTIONS { . = 0x7c00; .bootsect : { * (.bootsect); } _bootsect_end = .; /* load high out of the way, to leave the rest of RAM for userland * reserving the top 32kb for the kernel for now */ . = 0x98000; _kern_start = .; _kern_start_seg = _kern_start >> 4; .text : AT(_bootsect_end) { * (.startup); * (.text*); } .data : { * (.rodata*); * (.data*); } .bss ALIGN(4) (NOLOAD): { _bss_start = .; _bss_start_off = _bss_start - _kern_start; * (.bss*); * (COMMON); . = ALIGN(4); } _bss_size = SIZEOF(.bss); . = ALIGN(4); _kern_end = .; _kern_size = _kern_end - _kern_start; };