411 kx OUTPUT_ARCH( "riscv" )
411 kx ENTRY( reset_handler )
411 kx
411 kx MEMORY
411 kx {
411 kx FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K
411 kx RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 32K
411 kx }
411 kx
411 kx SECTIONS
411 kx {
411 kx __stack_size = DEFINED(__stack_size) ? __stack_size : 1K;
411 kx
411 kx .vector_table :
411 kx {
411 kx KEEP (*(SORT_NONE(.vector_table)))
411 kx } >FLASH
411 kx
411 kx .text :
411 kx {
411 kx *(.rodata .rodata.*)
411 kx *(.srodata .srodata.*)
411 kx *(.text .text.*)
411 kx } >FLASH
411 kx
411 kx . = ALIGN(4);
411 kx
411 kx PROVIDE (__etext = .);
411 kx PROVIDE (_etext = .);
411 kx PROVIDE (etext = .);
411 kx
411 kx _sidata = .;
411 kx .data : AT( _sidata )
411 kx {
411 kx _sdata = .;
411 kx *(.rdata)
411 kx *(.data .data.*)
411 kx *(.sdata .sdata.*)
411 kx . = ALIGN(4);
411 kx _edata = .;
411 kx } >RAM
411 kx
411 kx PROVIDE( _edata = . );
411 kx PROVIDE( edata = . );
411 kx PROVIDE( _fbss = . );
411 kx PROVIDE( __bss_start = . );
411 kx
411 kx .bss :
411 kx {
411 kx _sbss = .;
411 kx *(.sbss*)
411 kx *(.bss .bss.*)
411 kx *(COMMON)
411 kx . = ALIGN(4);
411 kx _ebss = .;
411 kx } >RAM
411 kx
411 kx . = ALIGN(8);
411 kx PROVIDE( _end = . );
411 kx PROVIDE( end = . );
411 kx
411 kx .stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
411 kx {
411 kx PROVIDE( _heap_end = . );
411 kx . = __stack_size;
411 kx PROVIDE( _sp = . );
411 kx } >RAM
411 kx }