From 9aaf8f2b0b3fb4b95b1a635714c13091c30e00e2 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sat, 2 Jul 2016 14:33:11 +0200 Subject: score/arm: Ensure that copile time alignment is 64 bytes for Cortex-A multilib. Some/many Cortex-A cores have data cache line length 64 bytes and maximum value has to be used for system structures alignment. Updates #2782 Updates #2783 --- cpukit/score/cpu/arm/rtems/score/arm.h | 4 ++++ cpukit/score/cpu/arm/rtems/score/cpu.h | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cpukit/score/cpu/arm/rtems/score/arm.h b/cpukit/score/cpu/arm/rtems/score/arm.h index 6d1f8502a3..af32fc3150 100644 --- a/cpukit/score/cpu/arm/rtems/score/arm.h +++ b/cpukit/score/cpu/arm/rtems/score/arm.h @@ -53,6 +53,10 @@ extern "C" { #define ARM_MULTILIB_HAS_THREAD_ID_REGISTER #endif +#if defined(__ARM_ARCH_7A__) + #define ARM_MULTILIB_CACHE_LINE_MAX_64 +#endif + #if !defined(__SOFTFP__) #if defined(__ARM_NEON__) #define ARM_MULTILIB_VFP_D32 diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h index 9dc4d07103..25d4ee2fb7 100644 --- a/cpukit/score/cpu/arm/rtems/score/cpu.h +++ b/cpukit/score/cpu/arm/rtems/score/cpu.h @@ -145,8 +145,13 @@ #define CPU_STACK_GROWS_UP FALSE -/* XXX Why 32? */ -#define CPU_STRUCTURE_ALIGNMENT __attribute__ ((aligned (32))) +#if defined(ARM_MULTILIB_CACHE_LINE_MAX_64) + #define CPU_CACHE_LINE_BYTES 32 +#else + #define CPU_CACHE_LINE_BYTES 64 +#endif + +#define CPU_STRUCTURE_ALIGNMENT __attribute__ ((aligned (CPU_CACHE_LINE_BYTES ))) #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE -- cgit v1.2.3