[rtems commit] cpukit: Enable debug for SMP AArch64

Joel Sherrill joel at rtems.org
Mon Nov 22 21:46:46 UTC 2021


Module:    rtems
Branch:    master
Commit:    50cf19320d8886b9999ada4b6296ea08d5affd5f
Changeset: http://git.rtems.org/rtems/commit/?id=50cf19320d8886b9999ada4b6296ea08d5affd5f

Author:    Kinsey Moore <kinsey.moore at oarcorp.com>
Date:      Tue Nov 16 10:26:00 2021 -0600

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.

---

 cpukit/include/rtems/score/percpu.h | 31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/cpukit/include/rtems/score/percpu.h b/cpukit/include/rtems/score/percpu.h
index 6081653..0794f15 100644
--- a/cpukit/include/rtems/score/percpu.h
+++ b/cpukit/include/rtems/score/percpu.h
@@ -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_PROFILING 0
+  #endif
+
+  #if defined( RTEMS_DEBUG )
+    #define PER_CPU_CONTROL_SIZE_DEBUG 76
   #else
-    #define PER_CPU_CONTROL_SIZE_APPROX \
-      ( 180 + CPU_PER_CPU_CONTROL_SIZE + CPU_INTERRUPT_FRAME_SIZE )
+    #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



More information about the vc mailing list