cpukit: Enable debug for SMP AArch64

Ensure when both RTEMS_DEBUG is specified and pointers are large that
enough space is allocated to accomodate the Per_CPU_Control structure.
This changes the calculation to be more compositional instead of trying
to list out every permutation of options possible.
This commit is contained in:
Kinsey Moore
2021-11-22 15:51:40 -06:00
committed by Joel Sherrill
parent 18484f02ad
commit 50cf19320d
+22 -9
View File
@@ -38,18 +38,31 @@
extern "C" {
#endif
#if defined(RTEMS_SMP)
#if defined(RTEMS_PROFILING)
#define PER_CPU_CONTROL_SIZE_APPROX \
( 512 + CPU_PER_CPU_CONTROL_SIZE + CPU_INTERRUPT_FRAME_SIZE )
#elif defined(RTEMS_DEBUG) || CPU_SIZEOF_POINTER > 4
#define PER_CPU_CONTROL_SIZE_APPROX \
( 256 + CPU_PER_CPU_CONTROL_SIZE + CPU_INTERRUPT_FRAME_SIZE )
#if defined( RTEMS_SMP )
#if defined( RTEMS_PROFILING )
#define PER_CPU_CONTROL_SIZE_PROFILING 332
#else
#define PER_CPU_CONTROL_SIZE_APPROX \
( 180 + CPU_PER_CPU_CONTROL_SIZE + CPU_INTERRUPT_FRAME_SIZE )
#define PER_CPU_CONTROL_SIZE_PROFILING 0
#endif
#if defined( RTEMS_DEBUG )
#define PER_CPU_CONTROL_SIZE_DEBUG 76
#else
#define PER_CPU_CONTROL_SIZE_DEBUG 0
#endif
#if CPU_SIZEOF_POINTER > 4
#define PER_CPU_CONTROL_SIZE_BIG_POINTER 76
#else
#define PER_CPU_CONTROL_SIZE_BIG_POINTER 0
#endif
#define PER_CPU_CONTROL_SIZE_BASE 180
#define PER_CPU_CONTROL_SIZE_APPROX \
( PER_CPU_CONTROL_SIZE_BASE + CPU_PER_CPU_CONTROL_SIZE + \
CPU_INTERRUPT_FRAME_SIZE + PER_CPU_CONTROL_SIZE_PROFILING + \
PER_CPU_CONTROL_SIZE_DEBUG + PER_CPU_CONTROL_SIZE_BIG_POINTER )
/*
* This ensures that on SMP configurations the individual per-CPU controls
* are on different cache lines to prevent false sharing. This define can be