diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-01-28 11:52:17 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-04 10:06:34 +0100 |
commit | 960fd8546fb0130058e6a588fbc62d696d01df0e (patch) | |
tree | de9bc7a1e9f1e2369e941d888ff476917c02b044 /c/src/lib/libbsp/sh | |
parent | score: Add _Thread_Get_maximum_internal_threads() (diff) | |
download | rtems-960fd8546fb0130058e6a588fbc62d696d01df0e.tar.bz2 |
bsps: Thread-local storage (TLS) for linkcmds
Diffstat (limited to 'c/src/lib/libbsp/sh')
-rw-r--r-- | c/src/lib/libbsp/sh/gensh1/startup/linkcmds | 20 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/gensh2/startup/linkcmds | 20 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/gensh2/startup/linkcmds.ram | 20 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/gensh2/startup/linkcmds.rom | 20 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/gensh4/startup/linkcmds | 14 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom | 14 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom2ram | 14 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/shsim/startup/linkcmds | 18 | ||||
-rw-r--r-- | c/src/lib/libbsp/sh/shsim/startup/linkcmds.sim | 18 |
9 files changed, 142 insertions, 16 deletions
diff --git a/c/src/lib/libbsp/sh/gensh1/startup/linkcmds b/c/src/lib/libbsp/sh/gensh1/startup/linkcmds index 90715b234e..6a447a4cc7 100644 --- a/c/src/lib/libbsp/sh/gensh1/startup/linkcmds +++ b/c/src/lib/libbsp/sh/gensh1/startup/linkcmds @@ -128,9 +128,23 @@ SECTIONS } > ram _etext = .; PROVIDE (etext = .); - .fini . : { *(.fini) } =0 - .rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } - .rodata1 . : { *(.rodata1) } + .fini . : { *(.fini) } > ram =0 + .rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } > ram + .rodata1 . : { *(.rodata1) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(128) + (. & (128 - 1)); diff --git a/c/src/lib/libbsp/sh/gensh2/startup/linkcmds b/c/src/lib/libbsp/sh/gensh2/startup/linkcmds index be04e23faa..7c090bb7ef 100644 --- a/c/src/lib/libbsp/sh/gensh2/startup/linkcmds +++ b/c/src/lib/libbsp/sh/gensh2/startup/linkcmds @@ -139,9 +139,23 @@ SECTIONS } > ram _etext = .; PROVIDE (etext = .); - .fini . : { *(.fini) } =0 - .rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } - .rodata1 . : { *(.rodata1) } + .fini . : { *(.fini) } > ram =0 + .rodata . : { *(.rodata*) *(.gnu.linkonce.r*) } > ram + .rodata1 . : { *(.rodata1) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(128) + (. & (128 - 1)); diff --git a/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.ram b/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.ram index 1d75185354..48c5f4fa46 100644 --- a/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.ram +++ b/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.ram @@ -138,9 +138,23 @@ SECTIONS } > ram _etext = .; PROVIDE (etext = .); - .fini . : { *(.fini) } =0 - .rodata . : { *(.rodata) *(.gnu.linkonce.r*) } - .rodata1 . : { *(.rodata1) } + .fini . : { *(.fini) } > ram =0 + .rodata . : { *(.rodata) *(.gnu.linkonce.r*) } > ram + .rodata1 . : { *(.rodata1) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(128) + (. & (128 - 1)); diff --git a/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.rom b/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.rom index b734437d5c..930fa6d13d 100644 --- a/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.rom +++ b/c/src/lib/libbsp/sh/gensh2/startup/linkcmds.rom @@ -139,9 +139,23 @@ SECTIONS } > ram _etext = .; PROVIDE (etext = .); - .fini . : { *(.fini) } =0 - .rodata . : { *(.rodata) *(.gnu.linkonce.r*) } - .rodata1 . : { *(.rodata1) } + .fini . : { *(.fini) } > ram =0 + .rodata . : { *(.rodata) *(.gnu.linkonce.r*) } > ram + .rodata1 . : { *(.rodata1) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(128) + (. & (128 - 1)); diff --git a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds index 2546bf290f..e38cb63593 100644 --- a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds +++ b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds @@ -93,6 +93,20 @@ SECTIONS *(.rodata.*) *(.gnu.linkonce.r*) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); .ctors : { ___ctors = .; diff --git a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom index a5cd939181..89325c04da 100644 --- a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom +++ b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom @@ -105,6 +105,20 @@ SECTIONS *(.gnu.linkonce.r*) . = ALIGN(32); } > rom + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > rom + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > rom + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); .ctors : { ___ctors = .; diff --git a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom2ram b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom2ram index 68c3b1a3cc..0ce6effae6 100644 --- a/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom2ram +++ b/c/src/lib/libbsp/sh/gensh4/startup/linkcmds.rom2ram @@ -92,6 +92,20 @@ SECTIONS *(.gnu.linkonce.r*) . = ALIGN(32); } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); .ctors : AT(LOADADDR(.rodata) + SIZEOF(.rodata)) { ___ctors = .; diff --git a/c/src/lib/libbsp/sh/shsim/startup/linkcmds b/c/src/lib/libbsp/sh/shsim/startup/linkcmds index a12af48b9c..4da05e451d 100644 --- a/c/src/lib/libbsp/sh/shsim/startup/linkcmds +++ b/c/src/lib/libbsp/sh/shsim/startup/linkcmds @@ -127,8 +127,22 @@ SECTIONS } =0 _etext = .; PROVIDE (etext = .); - .rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } - .rodata1 . : { *(.rodata1) } + .rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } > ram + .rodata1 . : { *(.rodata1) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(128) + (. & (128 - 1)); diff --git a/c/src/lib/libbsp/sh/shsim/startup/linkcmds.sim b/c/src/lib/libbsp/sh/shsim/startup/linkcmds.sim index 9e5c86f923..6543fbd8ce 100644 --- a/c/src/lib/libbsp/sh/shsim/startup/linkcmds.sim +++ b/c/src/lib/libbsp/sh/shsim/startup/linkcmds.sim @@ -121,8 +121,22 @@ SECTIONS } =0 _etext = .; PROVIDE (etext = .); - .rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } - .rodata1 . : { *(.rodata1) } + .rodata . : { *(.rodata*) .rodata.* *(.gnu.linkonce.r*) } > ram + .rodata1 . : { *(.rodata1) } > ram + .tdata : { + __TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + __TLS_Data_end = .; + } > ram + .tbss : { + __TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + __TLS_BSS_end = .; + } > ram + __TLS_Data_size = __TLS_Data_end - __TLS_Data_begin; + __TLS_BSS_size = __TLS_BSS_end - __TLS_BSS_begin; + __TLS_Size = __TLS_BSS_end - __TLS_Data_begin; + __TLS_Alignment = ALIGNOF (.tdata); /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(128) + (. & (128 - 1)); |