123456789101112131415161718192021222324252627282930313233343536373839 |
- # originates from thread-local-storage.ld
- if(CONFIG_THREAD_LOCAL_STORAGE)
- zephyr_linker_section(NAME .tdata LMA FLASH NOINPUT)
- zephyr_linker_section_configure(SECTION .tdata INPUT ".gnu.linkonce.td.*")
- # GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
- zephyr_linker_section(NAME .tbss LMA FLASH NOINPUT)
- zephyr_linker_section_configure(SECTION .tbss INPUT ".gnu.linkonce.tb.*")
- zephyr_linker_section_configure(SECTION .tbss INPUT ".tcommon")
- # GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
- #
- # These needs to be outside of the tdata/tbss
- # sections or else they would be considered
- # thread-local variables, and the code would use
- # the wrong values.
- #
- # This scheme is not yet handled
- if(CONFIG_XIP)
- # /* The "master copy" of tdata should be only in flash on XIP systems */
- # PROVIDE(__tdata_start = LOADADDR(tdata));
- else()
- # PROVIDE(__tdata_start = ADDR(tdata));
- endif()
- # PROVIDE(__tdata_size = SIZEOF(tdata));
- # PROVIDE(__tdata_end = __tdata_start + __tdata_size);
- # PROVIDE(__tdata_align = ALIGNOF(tdata));
- #
- # PROVIDE(__tbss_start = ADDR(tbss));
- # PROVIDE(__tbss_size = SIZEOF(tbss));
- # PROVIDE(__tbss_end = __tbss_start + __tbss_size);
- # PROVIDE(__tbss_align = ALIGNOF(tbss));
- #
- # PROVIDE(__tls_start = __tdata_start);
- # PROVIDE(__tls_end = __tbss_end);
- # PROVIDE(__tls_size = __tbss_end - __tdata_start);
- endif()
|