From 1fa8cf92790ad5a3365558eec1fe3d4c0a34f5d5 Mon Sep 17 00:00:00 2001 From: Adithya Baglody Date: Fri, 19 Oct 2018 10:15:19 -0700 Subject: [PATCH] linker: arm: place priv.noinit at the end of RAM This puts the priviledged stack at the end of RAM. This combines PR #10507 and #10542. Fixes #10473 Fixes #10474 Fixes #10515 Signed-off-by: Adithya Baglody Signed-off-by: Daniel Leung --- include/arch/arm/cortex_m/scripts/linker.ld | 2 ++ include/linker/priv_stacks-noinit.ld | 10 ++++++++++ scripts/sanitycheck | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 include/linker/priv_stacks-noinit.ld diff --git a/include/arch/arm/cortex_m/scripts/linker.ld b/include/arch/arm/cortex_m/scripts/linker.ld index 67089c44c0c..94cc988de76 100644 --- a/include/arch/arm/cortex_m/scripts/linker.ld +++ b/include/arch/arm/cortex_m/scripts/linker.ld @@ -366,6 +366,8 @@ SECTIONS #include #include +#include + __data_ram_end = .; diff --git a/include/linker/priv_stacks-noinit.ld b/include/linker/priv_stacks-noinit.ld new file mode 100644 index 00000000000..6247a99a1d7 --- /dev/null +++ b/include/linker/priv_stacks-noinit.ld @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2017 Linaro Limited. + * + * SPDX-License-Identifier: Apache-2.0 + */ + + SECTION_DATA_PROLOGUE(priv_stacks_noinit,,) + { + *(".priv_stacks.noinit") + } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) diff --git a/scripts/sanitycheck b/scripts/sanitycheck index 2da2fab7a89..665573d2953 100755 --- a/scripts/sanitycheck +++ b/scripts/sanitycheck @@ -655,7 +655,8 @@ class SizeCalculator: "ccm_data", "usb_descriptor", "usb_data", "usb_bos_desc", 'log_backends_sections', 'log_dynamic_sections', 'log_const_sections',"app_smem", 'shell_root_cmds_sections', - 'log_const_sections',"app_smem", "font_entry_sections"] + 'log_const_sections',"app_smem", "font_entry_sections", + "priv_stacks_noinit"] # These get copied into RAM only on non-XIP ro_sections = ["text", "ctors", "init_array", "reset", "object_access", "rodata", "devconfig", "net_l2", "vector", "_bt_settings_area"]