From 4a765b47a56cf9ba09c13381eb0cccd595e97cbd Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 3 Mar 2021 08:39:33 +0100 Subject: score: Enforce CPU_STACK_ALIGNMENT requirements Clarify CPU_STACK_ALIGNMENT requirements in no_cpu port. Add static assertion to enforce CPU_STACK_ALIGNMENT requirements. --- cpukit/score/cpu/bfin/include/rtems/score/cpu.h | 13 ------------- cpukit/score/cpu/lm32/include/rtems/score/cpu.h | 10 ---------- cpukit/score/cpu/m68k/include/rtems/score/cpu.h | 2 +- cpukit/score/cpu/mips/include/rtems/score/cpu.h | 9 --------- cpukit/score/cpu/moxie/include/rtems/score/cpu.h | 14 +------------- cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h | 9 ++++----- cpukit/score/cpu/or1k/include/rtems/score/cpu.h | 12 +----------- cpukit/score/cpu/powerpc/include/rtems/score/cpu.h | 9 --------- cpukit/score/cpu/sh/include/rtems/score/cpu.h | 9 --------- cpukit/score/cpu/sparc64/include/rtems/score/cpu.h | 7 ------- cpukit/score/cpu/v850/include/rtems/score/cpu.h | 12 +----------- 11 files changed, 8 insertions(+), 98 deletions(-) (limited to 'cpukit/score/cpu') diff --git a/cpukit/score/cpu/bfin/include/rtems/score/cpu.h b/cpukit/score/cpu/bfin/include/rtems/score/cpu.h index 44be6d7d54..d17dfbd30a 100644 --- a/cpukit/score/cpu/bfin/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/bfin/include/rtems/score/cpu.h @@ -292,19 +292,6 @@ typedef struct { */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT -/** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. - * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. - * - * Port Specific Information: - * - * XXX document implementation including references if appropriate - */ #define CPU_STACK_ALIGNMENT 8 #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/lm32/include/rtems/score/cpu.h b/cpukit/score/cpu/lm32/include/rtems/score/cpu.h index 7cf6359419..5c890de53e 100644 --- a/cpukit/score/cpu/lm32/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/lm32/include/rtems/score/cpu.h @@ -401,16 +401,6 @@ extern Context_Control_fp _CPU_Null_fp_context; */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT -/** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. - * - * - * Port Specific Information: - * - * Stack is software-managed - */ #define CPU_STACK_ALIGNMENT CPU_ALIGNMENT #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/m68k/include/rtems/score/cpu.h b/cpukit/score/cpu/m68k/include/rtems/score/cpu.h index 5c1df94fc5..de7f8215bb 100644 --- a/cpukit/score/cpu/m68k/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/m68k/include/rtems/score/cpu.h @@ -338,7 +338,7 @@ extern void* _VBR; * from the Workspace. */ -#define CPU_STACK_ALIGNMENT 0 +#define CPU_STACK_ALIGNMENT CPU_ALIGNMENT #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/mips/include/rtems/score/cpu.h b/cpukit/score/cpu/mips/include/rtems/score/cpu.h index 04d33f5658..cdb0e64013 100644 --- a/cpukit/score/cpu/mips/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/mips/include/rtems/score/cpu.h @@ -525,15 +525,6 @@ extern Context_Control_fp _CPU_Null_fp_context; #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT -/* - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. - * - * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. - */ - #define CPU_STACK_ALIGNMENT CPU_ALIGNMENT #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/moxie/include/rtems/score/cpu.h b/cpukit/score/cpu/moxie/include/rtems/score/cpu.h index c0a41c9db6..c857734a2e 100644 --- a/cpukit/score/cpu/moxie/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/moxie/include/rtems/score/cpu.h @@ -247,19 +247,7 @@ typedef struct { */ #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT -/* - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. - * - * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. - * - * MOXIE Specific Information: - * - * XXX - */ -#define CPU_STACK_ALIGNMENT 0 +#define CPU_STACK_ALIGNMENT CPU_ALIGNMENT #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h b/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h index ea69a5b972..c067501502 100644 --- a/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/no_cpu/include/rtems/score/cpu.h @@ -592,17 +592,16 @@ extern Context_Control_fp _CPU_Null_fp_context; /** * This number corresponds to the byte alignment requirement for the * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. + * data types alignment specified by @ref CPU_ALIGNMENT. * - * NOTE: This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. + * NOTE: This must be a power of two and greater than or equal to + * @ref CPU_HEAP_ALIGNMENT. * * Port Specific Information: * * XXX document implementation including references if appropriate */ -#define CPU_STACK_ALIGNMENT 0 +#define CPU_STACK_ALIGNMENT CPU_HEAP_ALIGNMENT /** * The alignment of the interrupt stack in bytes. diff --git a/cpukit/score/cpu/or1k/include/rtems/score/cpu.h b/cpukit/score/cpu/or1k/include/rtems/score/cpu.h index c1f94a71af..22acfd590e 100644 --- a/cpukit/score/cpu/or1k/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/or1k/include/rtems/score/cpu.h @@ -237,17 +237,7 @@ typedef Context_Control CPU_Interrupt_frame; #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT -/* - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. - * - * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. - * - */ - -#define CPU_STACK_ALIGNMENT 0 +#define CPU_STACK_ALIGNMENT CPU_ALIGNMENT #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h b/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h index a40b378b6d..996b6f8e60 100644 --- a/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/powerpc/include/rtems/score/cpu.h @@ -661,15 +661,6 @@ void ppc_set_interrupt_level( uint32_t level ); #define CPU_HEAP_ALIGNMENT (PPC_ALIGNMENT) -/* - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. - * - * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. - */ - #define CPU_STACK_ALIGNMENT (PPC_STACK_ALIGNMENT) #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/sh/include/rtems/score/cpu.h b/cpukit/score/cpu/sh/include/rtems/score/cpu.h index 0782021b2f..0df6aa3f83 100644 --- a/cpukit/score/cpu/sh/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/sh/include/rtems/score/cpu.h @@ -358,15 +358,6 @@ void CPU_delay( uint32_t microseconds ); #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT -/* - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. - * - * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. - */ - #define CPU_STACK_ALIGNMENT CPU_ALIGNMENT #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES diff --git a/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h b/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h index 2701298733..e0f56b8e89 100644 --- a/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/sparc64/include/rtems/score/cpu.h @@ -635,13 +635,6 @@ extern const CPU_Trap_table_entry _CPU_Trap_slot_template; #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /* - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by CPU_ALIGNMENT. If the CPU_ALIGNMENT - * is strict enough for the stack, then this should be set to 0. - * - * NOTE: This must be a power of 2 either 0 or greater than CPU_ALIGNMENT. - * * The alignment restrictions for the SPARC are not that strict but this * should unsure that the stack is always sufficiently alignment that the * window overflow, underflow, and flush routines can use double word loads diff --git a/cpukit/score/cpu/v850/include/rtems/score/cpu.h b/cpukit/score/cpu/v850/include/rtems/score/cpu.h index a648931fb9..1921216e2d 100644 --- a/cpukit/score/cpu/v850/include/rtems/score/cpu.h +++ b/cpukit/score/cpu/v850/include/rtems/score/cpu.h @@ -255,20 +255,10 @@ typedef struct { #define CPU_HEAP_ALIGNMENT CPU_ALIGNMENT /** - * This number corresponds to the byte alignment requirement for the - * stack. This alignment requirement may be stricter than that for the - * data types alignment specified by @ref CPU_ALIGNMENT. If the - * @ref CPU_ALIGNMENT is strict enough for the stack, then this should be - * set to 0. - * - * @note This must be a power of 2 either 0 or greater than @ref CPU_ALIGNMENT. - * - * Port Specific Information: - * * The v850 has enough RAM where alignment to 16 may be desirable depending * on the cache properties. But this remains to be demonstrated. */ -#define CPU_STACK_ALIGNMENT 4 +#define CPU_STACK_ALIGNMENT 8 #define CPU_INTERRUPT_STACK_ALIGNMENT CPU_CACHE_LINE_BYTES -- cgit v1.2.3