|
26 | 26 | #endif |
27 | 27 | #define RAMABLE_REGION RAM |
28 | 28 |
|
| 29 | +/* section alignment directive, valid only if not running in XIP mode */ |
| 30 | +#ifndef CONFIG_XIP |
| 31 | + #define SECTION_ALIGN ALIGN(_region_min_align) |
| 32 | +#else |
| 33 | + #define SECTION_ALIGN |
| 34 | +#endif |
| 35 | + |
29 | 36 | #if !defined(CONFIG_XIP) && (CONFIG_FLASH_SIZE == 0) |
30 | 37 | #define ROM_ADDR RAM_ADDR |
31 | 38 | #else |
@@ -73,8 +80,6 @@ _region_min_align = 4; |
73 | 80 | . = ALIGN(_region_min_align) |
74 | 81 | #endif |
75 | 82 |
|
76 | | -#define BSS_ALIGN ALIGN(_region_min_align) |
77 | | - |
78 | 83 | MEMORY |
79 | 84 | { |
80 | 85 | FLASH (rx) : ORIGIN = ROM_ADDR, LENGTH = ROM_SIZE |
@@ -266,35 +271,10 @@ SECTIONS |
266 | 271 | _app_smem_rom_start = LOADADDR(_APP_SMEM_SECTION_NAME); |
267 | 272 | #endif /* CONFIG_USERSPACE */ |
268 | 273 |
|
269 | | - SECTION_DATA_PROLOGUE(_BSS_SECTION_NAME,(NOLOAD), BSS_ALIGN) |
270 | | - { |
271 | | - /* |
272 | | - * For performance, BSS section is assumed to be 4 byte aligned and |
273 | | - * a multiple of 4 bytes |
274 | | - */ |
275 | | - . = ALIGN(4); |
276 | | - __bss_start = .; |
277 | | - __kernel_ram_start = .; |
278 | | - |
279 | | - *(.bss) |
280 | | - *(".bss.*") |
281 | | - *(COMMON) |
282 | | - *(".kernel_bss.*") |
283 | | - |
284 | | -#ifdef CONFIG_CODE_DATA_RELOCATION |
285 | | -#include <linker_sram_bss_relocate.ld> |
286 | | -#endif |
287 | | - |
288 | | - /* |
289 | | - * As memory is cleared in words only, it is simpler to ensure the BSS |
290 | | - * section ends on a 4 byte boundary. This wastes a maximum of 3 bytes. |
291 | | - */ |
292 | | - __bss_end = ALIGN(4); |
293 | | - } GROUP_DATA_LINK_IN(RAMABLE_REGION, RAMABLE_REGION) |
294 | | - |
295 | | -#include <zephyr/linker/common-noinit.ld> |
| 274 | + . = ALIGN(_region_min_align); |
| 275 | + __kernel_ram_start = .; |
296 | 276 |
|
297 | | - SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,) |
| 277 | + SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,SECTION_ALIGN) |
298 | 278 | { |
299 | 279 | __data_region_start = .; |
300 | 280 | __data_start = .; |
@@ -328,7 +308,29 @@ SECTIONS |
328 | 308 | #include <snippets-data-sections.ld> |
329 | 309 |
|
330 | 310 | __data_region_end = .; |
| 311 | + . = ALIGN(_region_min_align); |
| 312 | + |
| 313 | + SECTION_DATA_PROLOGUE(_BSS_SECTION_NAME,(NOLOAD), SECTION_ALIGN) |
| 314 | + { |
| 315 | + __bss_start = .; |
| 316 | + |
| 317 | + *(.bss) |
| 318 | + *(".bss.*") |
| 319 | + *(COMMON) |
| 320 | + *(".kernel_bss.*") |
331 | 321 |
|
| 322 | +#ifdef CONFIG_CODE_DATA_RELOCATION |
| 323 | +#include <linker_sram_bss_relocate.ld> |
| 324 | +#endif |
| 325 | + |
| 326 | + /* |
| 327 | + * As memory is cleared in words only, it is simpler to ensure the BSS |
| 328 | + * section ends on a 4 byte boundary. This wastes a maximum of 3 bytes. |
| 329 | + */ |
| 330 | + __bss_end = ALIGN(4); |
| 331 | + } GROUP_DATA_LINK_IN(RAMABLE_REGION, RAMABLE_REGION) |
| 332 | + |
| 333 | +#include <zephyr/linker/common-noinit.ld> |
332 | 334 |
|
333 | 335 | /* Define linker symbols */ |
334 | 336 |
|
|
0 commit comments