github.com/tinygo-org/tinygo@v0.31.3-0.20240404173401-90b0bf646c27/targets/maixbit.ld (about) 1 2 MEMORY 3 { 4 RAM (xrw) : ORIGIN = 0x80000000, LENGTH = 6M 5 } 6 7 _stack_size = 2K; 8 9 SECTIONS 10 { 11 .text : 12 { 13 . = ALIGN(16); 14 KEEP(*(.init)) 15 . = ALIGN(16); 16 *(.text.handleInterruptASM) 17 *(.text) 18 *(.text.*) 19 *(.rodata) 20 *(.rodata.*) 21 . = ALIGN(16); 22 } >RAM 23 24 25 /* Start address (in flash) of .data, used by startup code. */ 26 _sidata = LOADADDR(.data); 27 28 /* Globals with initial value */ 29 .data : 30 { 31 . = ALIGN(16); 32 /* see https://gnu-mcu-eclipse.github.io/arch/riscv/programmer/#the-gp-global-pointer-register */ 33 PROVIDE( __global_pointer$ = . + (4K / 2) ); 34 _sdata = .; /* used by startup code */ 35 *(.sdata) 36 *(.data .data.*) 37 . = ALIGN(16); 38 _edata = .; /* used by startup code */ 39 } >RAM 40 41 /* Zero-initialized globals */ 42 .bss : 43 { 44 . = ALIGN(16); 45 _sbss = .; /* used by startup code */ 46 *(.sbss) 47 *(.bss .bss.*) 48 *(COMMON) 49 . = ALIGN(16); 50 _ebss = .; /* used by startup code */ 51 } >RAM 52 53 /DISCARD/ : 54 { 55 *(.eh_frame) /* causes 'no memory region specified' error in lld */ 56 } 57 } 58 59 PROVIDE(_stack_top = ORIGIN(RAM) + LENGTH(RAM)); 60 61 /* For the memory allocator. */ 62 _heap_start = _ebss; 63 _heap_end = ORIGIN(RAM) + LENGTH(RAM) - _stack_size; 64 _globals_start = _sdata; 65 _globals_end = _ebss;