diff options
Diffstat (limited to 'cpukit/score/cpu/arm/rtems')
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/arm.h | 5 | ||||
-rw-r--r-- | cpukit/score/cpu/arm/rtems/score/cpu.h | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/cpukit/score/cpu/arm/rtems/score/arm.h b/cpukit/score/cpu/arm/rtems/score/arm.h index 608f753d11..3e428f9201 100644 --- a/cpukit/score/cpu/arm/rtems/score/arm.h +++ b/cpukit/score/cpu/arm/rtems/score/arm.h @@ -44,6 +44,11 @@ extern "C" { #define ARM_MULTILIB_HAS_LOAD_STORE_EXCLUSIVE #endif +#if defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) + #define ARM_MULTILIB_HAS_THREAD_ID_REGISTER +#endif + #if defined(__ARM_NEON__) #define ARM_MULTILIB_VFP_D32 #elif !defined(__SOFTFP__) diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h index 2d9b5d50b6..216f39f862 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h @@ -212,6 +212,10 @@ /** @} */ +#ifdef ARM_MULTILIB_HAS_THREAD_ID_REGISTER + #define ARM_CONTEXT_CONTROL_THREAD_ID_OFFSET 44 +#endif + #ifdef ARM_MULTILIB_VFP_D32 #define ARM_CONTEXT_CONTROL_D8_OFFSET 48 #endif @@ -267,6 +271,9 @@ typedef struct { #else void *register_sp; #endif +#ifdef ARM_MULTILIB_HAS_THREAD_ID_REGISTER + uint32_t thread_id; +#endif #ifdef ARM_MULTILIB_VFP_D32 uint64_t register_d8; uint64_t register_d9; @@ -400,7 +407,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 ); #define _CPU_Context_Get_SP( _context ) \ |