link.ld
1 OUTPUT_ARCH( "riscv" ) 2 ENTRY(_start) 3 4 _STACK_SIZE = 0x1000; 5 6 MEMORY 7 { 8 imem (rxai!w) : ORIGIN = 0x00000000, LENGTH = 64K 9 dmem (wxa!ri) : ORIGIN = 0x10000000, LENGTH = 128K 10 } 11 12 SECTIONS 13 { 14 .text.init : { 15 *(.text.init) 16 } >imem 17 18 .text : { 19 *(.text .text.*) 20 } >imem 21 22 .rodata : { 23 *(.rodata .rodata.*) 24 } >dmem 25 26 .data : 27 { 28 . = ALIGN(4); 29 30 *(.data .data.* .gnu.linkonce.d.*) 31 32 . = ALIGN(8); 33 __global_pointer$ = . + 0x800; 34 35 *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*) 36 *(.sdata .sdata.* .gnu.linkonce.s.*) 37 38 . = ALIGN(4); 39 } >dmem 40 41 .bss : 42 { 43 . = ALIGN(4); 44 __bss_start = .; 45 46 *(.dynbss) 47 *(.bss .bss.* .gnu.linkonce.b.*) 48 *(.dynsbss) 49 *(.sbss .sbss.* .gnu.linkonce.sb.*) 50 *(.scommon) 51 52 . = ALIGN(4); 53 __bss_end = .; 54 } >dmem 55 56 .stack : { 57 __stack_end = .; 58 . += _STACK_SIZE; 59 . = ALIGN(16); 60 __stack_top = .; 61 } >dmem 62 63 _end = .; 64 }