From 4e86db794f18cb4e1e283022d6f320111a30ee85 Mon Sep 17 00:00:00 2001 From: Adam Greig Date: Sat, 11 Feb 2023 03:11:15 +0000 Subject: Enforce 8-byte initial stack pointer alignment --- cortex-m-rt/src/lib.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'cortex-m-rt/src') diff --git a/cortex-m-rt/src/lib.rs b/cortex-m-rt/src/lib.rs index 6e6bf7e..6f72197 100644 --- a/cortex-m-rt/src/lib.rs +++ b/cortex-m-rt/src/lib.rs @@ -56,8 +56,13 @@ //! //! This optional symbol can be used to indicate where the call stack of the program should be //! placed. If this symbol is not used then the stack will be placed at the *end* of the `RAM` -//! region -- the stack grows downwards towards smaller address. This symbol can be used to place -//! the stack in a different memory region, for example: +//! region -- the stack grows downwards towards smaller address. +//! +//! For Cortex-M, the `_stack_start` must always be aligned to 8 bytes, which is enforced by +//! the linker script. If you override it, ensure that whatever value you set is a multiple +//! of 8 bytes. +//! +//! This symbol can be used to place the stack in a different memory region, for example: //! //! ```text //! /* Linker script for the STM32F303VCT6 */ -- cgit v1.2.3