diff options
-rw-r--r-- | support/ld/common_rom.inc | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/support/ld/common_rom.inc b/support/ld/common_rom.inc index 05edf3c..7284492 100644 --- a/support/ld/common_rom.inc +++ b/support/ld/common_rom.inc @@ -64,17 +64,20 @@ SECTIONS KEEP (*(SORT(.dtors.*))) KEEP (*crtend.o(.dtors)) + /* + * struct __cs3_region used during __cs3_start_c + */ . = ALIGN(4); __cs3_regions = .; - LONG (0) - LONG (__cs3_region_init_ram) - LONG (__cs3_region_start_ram) - LONG (__cs3_region_init_size_ram) - LONG (__cs3_region_zero_size_ram) + LONG (0) /* flags */ + LONG (__cs3_region_init_ram) /* initial contents */ + LONG (__cs3_region_start_ram) /* start address */ + LONG (__cs3_region_init_size_ram) /* size of initial data */ + LONG (__cs3_region_zero_size_ram) /* additional size to be zeroed */ } > REGION_TEXT /* - * .ARM.exidx exception unwinding + * .ARM.exidx exception unwinding; mandated by ARM's C++ ABI */ __exidx_start = .; .ARM.exidx : @@ -92,14 +95,16 @@ SECTIONS _etext = .; } > REGION_TEXT - /* We allow users to allocate into flash with this section */ + /* + * .USER_FLASH: We allow users to allocate into Flash here + */ .USER_FLASH : { *(.USER_FLASH) } > rom /* - * Start of data + * .data */ .data : { @@ -111,6 +116,9 @@ SECTIONS _edata = .; } > REGION_DATA AT> REGION_TEXT + /* + * .bss + */ .bss : { *(.bss .bss.* .gnu.linkonce.b.*) @@ -119,6 +127,10 @@ SECTIONS _end = .; } > REGION_BSS AT> REGION_TEXT + /* + * Constants needed for the pieces of CS3 we use during + * board startup; see libcs3_stm32_src/. + */ __cs3_region_init_ram = LOADADDR (.data); __cs3_region_init_size_ram = _edata - ADDR (.data); __cs3_region_zero_size_ram = _end - _edata; |