From 95d0c98cac5000da7f4f1fdd52299224b2f94235 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 24 Feb 2014 10:13:32 +0100 Subject: score: Fix thread TLS area initialization Do not use _TLS_Size here since this will lead GCC to assume that this symbol is not 0 and the later > 0 test will be optimized away. --- cpukit/score/src/threadinitialize.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'cpukit/score/src/threadinitialize.c') diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index bc2600afcb..94ff8650c2 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -40,16 +40,21 @@ bool _Thread_Initialize( Objects_Name name ) { - size_t actual_stack_size = 0; - void *stack = NULL; + size_t actual_stack_size = 0; + void *stack = NULL; #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE ) - void *fp_area; + void *fp_area; #endif - void *sched = NULL; - void *extensions_area; - bool extension_status; - int i; - uintptr_t tls_size = (uintptr_t) _TLS_Size; + void *sched = NULL; + void *extensions_area; + bool extension_status; + int i; + + /* + * Do not use _TLS_Size here since this will lead GCC to assume that this + * symbol is not 0 and the later > 0 test will be optimized away. + */ + uintptr_t tls_size = (uintptr_t) _TLS_BSS_end - (uintptr_t) _TLS_Data_begin; #if defined( RTEMS_SMP ) if ( rtems_configuration_is_smp_enabled() && !is_preemptible ) { -- cgit v1.2.3