OUTPUT_ARCH(riscv) ENTRY(_start) START_ADDRESS = 0x80200000; SECTIONS { . = START_ADDRESS; .text : { PROVIDE(_text_start = .); *(.text.entry) . = ALIGN(4K); *(.text .text.*) PROVIDE(_text_end = .); } . = ALIGN(4K); .rodata : { PROVIDE(_rodata_start = .); *(.rodata .rodata.*) PROVIDE(_rodata_end = .); } . = ALIGN(4K); .data : { PROVIDE(_data_start = .); *(.data .data.*) PROVIDE(_data_end = .); } . = ALIGN(4K); .sdata : { PROVIDE(_sdata_start = .); *(.sdata) *(.sdata.*) *(.srodata.*) *(.gnu.linkonce.s.*) PROVIDE(_sdata_end = .); } . = ALIGN(4K); .bss : { PROVIDE(_bss_start = .); *(.sbss*) *(.bss.stack) *(.bss .bss.*) PROVIDE(_initial_kernel_heap_start = .); PROVIDE(_initial_kernel_heap_size = 1024 * 1024); . += _initial_kernel_heap_size; PROVIDE(_bss_end = .); } /* FIXME: Currently this has to be aligned to PAGE_SIZE << MAX_ORDER */ . = ALIGN(4M); PROVIDE(_usable_memory_start = .); PROVIDE(_usable_memory_size = 0x88000000 - .); /DISCARD/ : { *(.comment) *(.eh_frame) } }