diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-09-27 07:43:37 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-10-14 10:48:22 +0200 |
commit | 4c89fbcd316ca99fa16a0acc31f88fb80cb3060f (patch) | |
tree | 1d5fb6dac956308d141bd7d9b20ec74bee38427b /cpukit/score/cpu/m68k | |
parent | score: Move Thread_Control::Registers member (diff) | |
download | rtems-4c89fbcd316ca99fa16a0acc31f88fb80cb3060f.tar.bz2 |
score: Add CPU_THREAD_LOCAL_STORAGE_VARIANT
Update #3835.
Diffstat (limited to 'cpukit/score/cpu/m68k')
-rw-r--r-- | cpukit/score/cpu/m68k/__m68k_read_tp.c | 4 | ||||
-rw-r--r-- | cpukit/score/cpu/m68k/cpu.c | 5 | ||||
-rw-r--r-- | cpukit/score/cpu/m68k/include/rtems/score/cpu.h | 1 | ||||
-rw-r--r-- | cpukit/score/cpu/m68k/include/rtems/score/cpuimpl.h | 2 |
4 files changed, 8 insertions, 4 deletions
diff --git a/cpukit/score/cpu/m68k/__m68k_read_tp.c b/cpukit/score/cpu/m68k/__m68k_read_tp.c index e15ac3fed3..43dd1d16ac 100644 --- a/cpukit/score/cpu/m68k/__m68k_read_tp.c +++ b/cpukit/score/cpu/m68k/__m68k_read_tp.c @@ -37,9 +37,7 @@ void __m68k_read_tp(void); void __m68k_read_tp(void) { const Thread_Control *executing = _Thread_Get_executing(); - void *tp = (char *) executing->Start.tls_area + - _TLS_Get_thread_control_block_area_size((uintptr_t) _TLS_Alignment) - + 0x7000; + void *tp = executing->Registers.thread_pointer; __asm__ volatile ( "move.l %0, %%a0" diff --git a/cpukit/score/cpu/m68k/cpu.c b/cpukit/score/cpu/m68k/cpu.c index 9f6fb9223e..44dc06cc91 100644 --- a/cpukit/score/cpu/m68k/cpu.c +++ b/cpukit/score/cpu/m68k/cpu.c @@ -279,6 +279,9 @@ void _CPU_Context_Initialize( #endif if ( tls_area != NULL ) { - _TLS_TCB_before_TLS_block_initialize( tls_area ); + the_context->thread_pointer = + (char *) _TLS_Initialize_area( tls_area ) + 0x7000; + } else { + the_context->thread_pointer = NULL; } } diff --git a/cpukit/score/cpu/m68k/include/rtems/score/cpu.h b/cpukit/score/cpu/m68k/include/rtems/score/cpu.h index 8fdcb8c15a..ae3194b9bb 100644 --- a/cpukit/score/cpu/m68k/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/m68k/include/rtems/score/cpu.h @@ -145,6 +145,7 @@ typedef struct { #if defined( __mcoldfire__ ) && ( M68K_HAS_FPU == 1 ) uint8_t fpu_dis; #endif + void *thread_pointer; } Context_Control; #define _CPU_Context_Get_SP( _context ) \ diff --git a/cpukit/score/cpu/m68k/include/rtems/score/cpuimpl.h b/cpukit/score/cpu/m68k/include/rtems/score/cpuimpl.h index b94c846bf2..f712433833 100644 --- a/cpukit/score/cpu/m68k/include/rtems/score/cpuimpl.h +++ b/cpukit/score/cpu/m68k/include/rtems/score/cpuimpl.h @@ -48,6 +48,8 @@ #define CPU_PER_CPU_CONTROL_SIZE 0 +#define CPU_THREAD_LOCAL_STORAGE_VARIANT 10 + #ifndef ASM #ifdef __cplusplus |