diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-01-28 12:10:08 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-02-04 10:06:35 +0100 |
commit | 022851aba54d32831feaff13deb3d9943e130eee (patch) | |
tree | c1d6a8404dae393bd147790f6a9cf09c2f327b5a /cpukit/score/cpu/arm/armv7m-context-initialize.c | |
parent | bsps: Thread-local storage (TLS) for linkcmds (diff) | |
download | rtems-022851aba54d32831feaff13deb3d9943e130eee.tar.bz2 |
Add thread-local storage (TLS) support
Tested and implemented on ARM, m68k, PowerPC and SPARC. Other
architectures need more work.
Diffstat (limited to 'cpukit/score/cpu/arm/armv7m-context-initialize.c')
-rw-r--r-- | cpukit/score/cpu/arm/armv7m-context-initialize.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/cpukit/score/cpu/arm/armv7m-context-initialize.c b/cpukit/score/cpu/arm/armv7m-context-initialize.c index 892df4d8c8..13aa0a9b19 100644 --- a/cpukit/score/cpu/arm/armv7m-context-initialize.c +++ b/cpukit/score/cpu/arm/armv7m-context-initialize.c @@ -26,6 +26,7 @@ #include <rtems/score/armv7m.h> #include <rtems/score/thread.h> +#include <rtems/score/tls.h> #ifdef ARM_MULTILIB_ARCH_V7M @@ -35,7 +36,8 @@ void _CPU_Context_Initialize( size_t stack_area_size, uint32_t new_level, void (*entry_point)( void ), - bool is_fp + bool is_fp, + void *tls_area ) { char *stack_area_end = (char *) stack_area_begin + stack_area_size; @@ -44,6 +46,10 @@ void _CPU_Context_Initialize( context->register_lr = entry_point; context->register_sp = stack_area_end; + + if ( tls_area != NULL ) { + _TLS_TCB_at_area_begin_initialize( tls_area ); + } } #endif /* ARM_MULTILIB_ARCH_V7M */ |