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/powerpc | |
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/powerpc')
-rw-r--r-- | c/src/lib/libbsp/powerpc/beatnik/startup/linkcmds | 14 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/ep1a/startup/linkcmds | 14 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base | 15 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/haleakala/startup/linkcmds | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mbx8xx/startup/linkcmds | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mpc8260ads/startup/linkcmds | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds | 15 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/score603e/startup/linkcmds | 14 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/startup/linkcmds | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/ss555/startup/linkcmds | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/virtex4/startup/linkcmds | 17 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/virtex5/startup/linkcmds | 17 |
14 files changed, 215 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/powerpc/beatnik/startup/linkcmds b/c/src/lib/libbsp/powerpc/beatnik/startup/linkcmds index a186b6dcae..667e1937ce 100644 --- a/c/src/lib/libbsp/powerpc/beatnik/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/beatnik/startup/linkcmds @@ -95,6 +95,20 @@ SECTIONS .fini : { _fini = .; *(.fini) } >CODE .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE .rodata1 : { *(.rodata1) } > CODE + .tdata : { + _TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + _TLS_Data_end = .; + } >CODE + .tbss : { + _TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + _TLS_BSS_end = .; + } >CODE + _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); _SDA2_BASE_ = __SDATA2_START__ + 0x8000; .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } > CODE .sbss2 : { diff --git a/c/src/lib/libbsp/powerpc/ep1a/startup/linkcmds b/c/src/lib/libbsp/powerpc/ep1a/startup/linkcmds index 61df06a1ac..0f4d247098 100644 --- a/c/src/lib/libbsp/powerpc/ep1a/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/ep1a/startup/linkcmds @@ -64,6 +64,20 @@ SECTIONS .fini : { _fini = .; *(.fini) } .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } .rodata1 : { *(.rodata1) } + .tdata : { + _TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + _TLS_Data_end = .; + } + .tbss : { + _TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + _TLS_BSS_end = .; + } + _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); .eh_frame : { *(.eh_frame) } _etext = .; PROVIDE (etext = .); diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base index 637a97324a..0cb5692ca2 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.base @@ -121,6 +121,21 @@ SECTIONS { PROVIDE (etext = .); } > 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); + .sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); diff --git a/c/src/lib/libbsp/powerpc/haleakala/startup/linkcmds b/c/src/lib/libbsp/powerpc/haleakala/startup/linkcmds index 788a347485..3c7942e884 100644 --- a/c/src/lib/libbsp/powerpc/haleakala/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/haleakala/startup/linkcmds @@ -141,6 +141,23 @@ SECTIONS text.size = text.end - text.start; + .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); + .jcr : { KEEP (*(.jcr)) } >RAM .rel.dyn : { diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/startup/linkcmds b/c/src/lib/libbsp/powerpc/mbx8xx/startup/linkcmds index 54e728e913..9307a9e8cc 100644 --- a/c/src/lib/libbsp/powerpc/mbx8xx/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/mbx8xx/startup/linkcmds @@ -138,6 +138,23 @@ SECTIONS PROVIDE (etext = .); PROVIDE (__etext = .); } > 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); .rel.dyn : { diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/startup/linkcmds b/c/src/lib/libbsp/powerpc/mpc8260ads/startup/linkcmds index 444420a87c..0ff192ed82 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/startup/linkcmds @@ -140,6 +140,23 @@ SECTIONS } > 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); + .rel.dyn : { diff --git a/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds b/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds index 7744ce699b..079d3fcce5 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds @@ -76,6 +76,21 @@ SECTIONS PROVIDE (__DTOR_END__ = .); .jcr : { KEEP (*(.jcr)) } > ROM =0 + .tdata : { + _TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + _TLS_Data_end = .; + } >ROM =0 + .tbss : { + _TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + _TLS_BSS_end = .; + } >ROM =0 + _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); + .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) diff --git a/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds b/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds index 0c28ace48e..d1da9a2948 100644 --- a/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/score603e/startup/linkcmds @@ -103,6 +103,20 @@ SECTIONS .fini : { _fini = .; __fini = .; *(.fini) } >RAM .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); .eh_frame : { *(.eh_frame) } >RAM _etext = .; PROVIDE (_etext = .); diff --git a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds index f2860d52ad..df5affb54d 100644 --- a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds @@ -80,6 +80,23 @@ SECTIONS .rodata : { *(.rodata*) *(.gnu.linkonce.r*) } > CODE .rodata1 : { *(.rodata1) } > CODE + .tdata : { + _TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + _TLS_Data_end = .; + } >CODE + + .tbss : { + _TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + _TLS_BSS_end = .; + } >CODE + + _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(0x10000) + (. & (0x10000 - 1)); diff --git a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base index cfdc02542a..ae29cb7b7c 100644 --- a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base @@ -109,11 +109,19 @@ SECTIONS { *(.gcc_except_table .gcc_except_table.*) } > REGION_RODATA AT > REGION_RODATA_LOAD .tdata : ALIGN_WITH_INPUT { + _TLS_Data_begin = .; *(.tdata .tdata.* .gnu.linkonce.td.*) + _TLS_Data_end = .; } > REGION_RODATA AT > REGION_RODATA_LOAD .tbss : ALIGN_WITH_INPUT { + _TLS_BSS_begin = .; *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + _TLS_BSS_end = .; } > REGION_RODATA AT > REGION_RODATA_LOAD + _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); .preinit_array : ALIGN_WITH_INPUT { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) diff --git a/c/src/lib/libbsp/powerpc/ss555/startup/linkcmds b/c/src/lib/libbsp/powerpc/ss555/startup/linkcmds index f32140497e..45a18faed7 100644 --- a/c/src/lib/libbsp/powerpc/ss555/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/ss555/startup/linkcmds @@ -132,6 +132,13 @@ SECTIONS text.end = .; PROVIDE (etext = .); PROVIDE (__etext = .); + } + text.size = text.end - text.start; + + .tdata : { + _TLS_Data_begin = .; + *(.tdata .tdata.* .gnu.linkonce.td.*) + _TLS_Data_end = .; /* * .data section contents, copied to RAM at system startup. @@ -139,7 +146,15 @@ SECTIONS . = ALIGN(0x20); data.contents.start = .; } - text.size = text.end - text.start; + .tbss : { + _TLS_BSS_begin = .; + *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) + _TLS_BSS_end = .; + } + _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); /* * If debugging, stack the read/write sections directly after the text diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base index d23e98abb4..ba6c1eade6 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/tqm8xx/startup/linkcmds.base @@ -113,6 +113,23 @@ SECTIONS { PROVIDE (etext = .); } > 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); + .sdata2 : { PROVIDE (_SDA2_BASE_ = 32768); diff --git a/c/src/lib/libbsp/powerpc/virtex4/startup/linkcmds b/c/src/lib/libbsp/powerpc/virtex4/startup/linkcmds index 74a10aa079..ed8ef750f5 100644 --- a/c/src/lib/libbsp/powerpc/virtex4/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/virtex4/startup/linkcmds @@ -94,6 +94,23 @@ SECTIONS .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); + /* Initialised small data addressed as offsets from r2 */ _SDA2_BASE_ = __SDATA2_START__ + 0x8000; .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM diff --git a/c/src/lib/libbsp/powerpc/virtex5/startup/linkcmds b/c/src/lib/libbsp/powerpc/virtex5/startup/linkcmds index a92d9a1e5e..3929b21399 100644 --- a/c/src/lib/libbsp/powerpc/virtex5/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/virtex5/startup/linkcmds @@ -94,6 +94,23 @@ SECTIONS .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); + /* Initialised small data addressed as offsets from r2 */ _SDA2_BASE_ = __SDATA2_START__ + 0x8000; .sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) } > RAM |