@@ -573,13 +573,34 @@ SECTIONS
573
573
. = ALIGN(4);
574
574
575
575
} > RAM AT> FLASH
576
+
577
+ .TFM_TDATA : ALIGN_WITH_INPUT {
578
+ *(.tdata .tdata.* .gnu.linkonce.td.*)
579
+ PROVIDE(__data_end = .);
580
+ PROVIDE(__tdata_end = .);
581
+ } > RAM AT> FLASH
582
+
576
583
Image$$ER_TFM_DATA$$RW$$Base = ADDR(.TFM_DATA);
577
- Image$$ER_TFM_DATA$$RW$$Limit = ADDR(.TFM_DATA ) + SIZEOF(.TFM_DATA );
584
+ Image$$ER_TFM_DATA$$RW$$Limit = ADDR(.TFM_TDATA ) + SIZEOF(.TFM_TDATA );
578
585
579
- .TFM_BSS ALIGN(4) (NOLOAD) :
580
- {
586
+ .TFM_TBSS (NOLOAD) : {
581
587
__bss_start__ = .;
582
588
589
+ *(.tbss .tbss.* .gnu.linkonce.tb.*)
590
+ *(.tcommon)
591
+ PROVIDE( __tls_end = . );
592
+ PROVIDE( __tbss_end = . );
593
+ } > RAM AT> RAM
594
+ PROVIDE( __tls_align = MAX(ALIGNOF(.TFM_TDATA), ALIGNOF(.TFM_TBSS)) );
595
+ PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) );
596
+
597
+ .TFM_TBSS_SPACE (NOLOAD) : {
598
+ . = ADDR(.TFM_TBSS);
599
+ . = . + SIZEOF(.TFM_TBSS);
600
+ } > RAM AT> RAM
601
+
602
+ .TFM_BSS ALIGN(4) (NOLOAD) :
603
+ {
583
604
/* The runtime partition placed order is same as load partition */
584
605
__partition_runtime_start__ = .;
585
606
KEEP(*(.bss.part_runtime_priority_00))
@@ -600,16 +621,26 @@ SECTIONS
600
621
*(COMMON)
601
622
. = ALIGN(4);
602
623
__bss_end__ = .;
624
+ __bss_end = .;
603
625
} > RAM AT> RAM
604
- Image$$ER_TFM_DATA$$ZI$$Base = ADDR(.TFM_BSS );
626
+ Image$$ER_TFM_DATA$$ZI$$Base = ADDR(.TFM_TBSS );
605
627
Image$$ER_TFM_DATA$$ZI$$Limit = ADDR(.TFM_BSS) + SIZEOF(.TFM_BSS);
606
628
Image$$ER_PART_RT_POOL$$ZI$$Base = __partition_runtime_start__;
607
629
Image$$ER_PART_RT_POOL$$ZI$$Limit = __partition_runtime_end__;
608
630
Image$$ER_SERV_RT_POOL$$ZI$$Base = __service_runtime_start__;
609
631
Image$$ER_SERV_RT_POOL$$ZI$$Limit = __service_runtime_end__;
610
632
611
633
Image$$ER_TFM_DATA$$Base = ADDR(.TFM_DATA);
612
- Image$$ER_TFM_DATA$$Limit = ADDR(.TFM_DATA) + SIZEOF(.TFM_DATA) + SIZEOF(.TFM_BSS);
634
+ Image$$ER_TFM_DATA$$Limit = ADDR(.TFM_BSS) + SIZEOF(.TFM_BSS);
635
+
636
+ PROVIDE(__data_start = ADDR(.TFM_DATA));
637
+ PROVIDE(__data_source = LOADADDR(.TFM_DATA));
638
+ PROVIDE(__data_size = __data_end - __data_start );
639
+ PROVIDE( __bss_start = ADDR(.TFM_TBSS));
640
+ PROVIDE( __bss_size = __bss_end - __bss_start );
641
+ PROVIDE( __tls_base = SIZEOF(.TFM_TDATA) ? ADDR(.TFM_TDATA) : ADDR(.TFM_TBSS) );
642
+ PROVIDE( __tls_align = MAX(ALIGNOF(.TFM_TDATA), ALIGNOF(.TFM_TBSS)) );
643
+ PROVIDE(__arm32_tls_tcb_offset = MAX(8, __tls_align) );
613
644
614
645
#if defined(CONFIG_TFM_USE_TRUSTZONE)
615
646
Image$$ER_VENEER$$Base = ADDR(.gnu.sgstubs);
0 commit comments