@@ -477,13 +477,34 @@ SECTIONS
477477 . = ALIGN (4 );
478478
479479 } > RAM AT> FLASH
480+
481+ .TFM_TDATA : ALIGN_WITH_INPUT {
482+ *(.tdata .tdata .* .gnu .linkonce .td .*)
483+ PROVIDE (__data_end = .);
484+ PROVIDE (__tdata_end = .);
485+ } > RAM AT> FLASH
486+
480487 Image$$ER_TFM_DATA$$RW$$Base = ADDR (.TFM_DATA );
481- Image$$ER_TFM_DATA$$RW$$Limit = ADDR (.TFM_DATA ) + SIZEOF (.TFM_DATA );
488+ Image$$ER_TFM_DATA$$RW$$Limit = ADDR (.TFM_TDATA ) + SIZEOF (.TFM_TDATA );
482489
483- .TFM_BSS ALIGN (4 ) (NOLOAD) :
484- {
490+ .TFM_TBSS (NOLOAD) : {
485491 __bss_start__ = .;
486492
493+ *(.tbss .tbss .* .gnu .linkonce .tb .*)
494+ *(.tcommon )
495+ PROVIDE ( __tls_end = . );
496+ PROVIDE ( __tbss_end = . );
497+ } > RAM AT> RAM
498+ PROVIDE ( __tls_align = MAX (ALIGNOF (.TFM_TDATA ), ALIGNOF (.TFM_TBSS )) );
499+ PROVIDE ( __arm32_tls_tcb_offset = MAX (8 , __tls_align) );
500+
501+ .TFM_TBSS_SPACE (NOLOAD) : {
502+ . = ADDR (.TFM_TBSS );
503+ . = . + SIZEOF (.TFM_TBSS );
504+ } > RAM AT> RAM
505+
506+ .TFM_BSS ALIGN (4 ) (NOLOAD) :
507+ {
487508 /* The runtime partition placed order is same as load partition */
488509 __partition_runtime_start__ = .;
489510 KEEP (*(.bss .part_runtime_priority_00 ))
@@ -504,16 +525,26 @@ SECTIONS
504525 *(COMMON)
505526 . = ALIGN (4 );
506527 __bss_end__ = .;
528+ __bss_end = .;
507529 } > RAM AT> RAM
508- Image$$ER_TFM_DATA$$ZI$$Base = ADDR (.TFM_BSS );
530+ Image$$ER_TFM_DATA$$ZI$$Base = ADDR (.TFM_TBSS );
509531 Image$$ER_TFM_DATA$$ZI$$Limit = ADDR (.TFM_BSS ) + SIZEOF (.TFM_BSS );
510532 Image$$ER_PART_RT_POOL$$ZI$$Base = __partition_runtime_start__;
511533 Image$$ER_PART_RT_POOL$$ZI$$Limit = __partition_runtime_end__;
512534 Image$$ER_SERV_RT_POOL$$ZI$$Base = __service_runtime_start__;
513535 Image$$ER_SERV_RT_POOL$$ZI$$Limit = __service_runtime_end__;
514536
515537 Image$$ER_TFM_DATA$$Base = ADDR (.TFM_DATA );
516- Image$$ER_TFM_DATA$$Limit = ADDR (.TFM_DATA ) + SIZEOF (.TFM_DATA ) + SIZEOF (.TFM_BSS );
538+ Image$$ER_TFM_DATA$$Limit = ADDR (.TFM_BSS ) + SIZEOF (.TFM_BSS );
539+
540+ PROVIDE (__data_start = ADDR (.TFM_DATA ));
541+ PROVIDE (__data_source = LOADADDR (.TFM_DATA ));
542+ PROVIDE (__data_size = __data_end - __data_start );
543+ PROVIDE ( __bss_start = ADDR (.TFM_TBSS ));
544+ PROVIDE ( __bss_size = __bss_end - __bss_start );
545+ PROVIDE ( __tls_base = SIZEOF (.TFM_TDATA ) ? ADDR (.TFM_TDATA ) : ADDR (.TFM_TBSS ) );
546+ PROVIDE ( __tls_align = MAX (ALIGNOF (.TFM_TDATA ), ALIGNOF (.TFM_TBSS )) );
547+ PROVIDE (__arm32_tls_tcb_offset = MAX (8 , __tls_align) );
517548
518549#if defined(CONFIG_TFM_USE_TRUSTZONE)
519550 Image$$ER_VENEER$$Base = ADDR (.gnu .sgstubs );
0 commit comments