arch/xtensa: Support __thread and thread_local keywords

Enable architecture-specific support for those keywords. This is a
"gcc-based" thread local storage implementation.
This commit is contained in:
Tiago Medicci Serrano
2024-11-27 13:30:26 -03:00
committed by Xiang Xiao
parent 02828921db
commit 7548db1980
15 changed files with 291 additions and 2 deletions
@@ -403,6 +403,7 @@ SECTIONS
.flash.rodata :
{
_rodata_reserved_start = ABSOLUTE(.);
. = ALIGN(4);
_srodata = ABSOLUTE(.);
*(EXCLUDE_FILE (*libarch.a:esp32_spiflash.* *libarch.a:esp32_spicache.*
@@ -469,8 +470,24 @@ SECTIONS
*(.lit4.*)
*(.gnu.linkonce.lit4.*)
_lit4_end = ABSOLUTE(.);
/* TLS data. */
. = ALIGN(4);
_thread_local_start = ABSOLUTE(.);
_stdata = ABSOLUTE(.);
*(.tdata .tdata.* .gnu.linkonce.td.*);
_etdata = ABSOLUTE(.);
_stbss = ABSOLUTE(.);
*(.tbss .tbss.* .gnu.linkonce.tb.* .tcommon);
_etbss = ABSOLUTE(.);
_thread_local_end = ABSOLUTE(.);
_rodata_reserved_end = ABSOLUTE(.);
} >default_rodata_seg AT>ROM
_rodata_reserved_align = ALIGNOF(.flash.rodata);
_image_irom_vma = ADDR(.flash.text);
_image_irom_lma = LOADADDR(.flash.text);
@@ -38,6 +38,7 @@ CONFIG_PREALLOC_TIMERS=4
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_THREAD_LOCAL=y
CONFIG_SCHED_WAITPID=y
CONFIG_SPI=y
CONFIG_START_DAY=6