ENTRY(_start) MEMORY { TEXT (rx) : ORIGIN = 0x80000, LENGTH = 64K RO (r) : ORIGIN = 0x90000, LENGTH = 16K DATA (rw) : ORIGIN = 0x94000, LENGTH = 64K RAM (rw) : ORIGIN = 0xa4000, LENGTH = 64M } SECTIONS { .text : { KEEP(*(.text.boot)) *(.text) } >TEXT .rodata : { *(.rodata) } >RO .data : { *(.data) } >DATA .bss : { __bss_start = .; *(.bss) __bss_end = .; } >DATA } PROVIDE(__kernel_start = ORIGIN(TEXT)); PROVIDE(__kernel_end = ORIGIN(DATA) + LENGTH(DATA)); PROVIDE(__heap_start = ORIGIN(RAM)); PROVIDE(__heap_end = ORIGIN(RAM) + 32M); PROVIDE(__stack_end = ORIGIN(RAM) + LENGTH(RAM)); PROVIDE(__bss_size = (__bss_end - __bss_start)>>3);