| # SPDX-License-Identifier: Apache-2.0 |
| # The contents of this file is based on include/zephyr/linker/kobject-priv-stacks.ld |
| # Please keep in sync |
| |
| if(CONFIG_USERSPACE) |
| if(CONFIG_GEN_PRIV_STACKS) |
| # Padding is needed to preserve kobject addresses |
| # if we have reserved more space than needed. |
| zephyr_linker_section(NAME .priv_stacks_noinit GROUP NOINIT_REGION NOINPUT NOINIT |
| MIN_SIZE @KOBJECT_PRIV_STACKS_SZ,undef:0@ MAX_SIZE @KOBJECT_PRIV_STACKS_SZ,undef:0@) |
| |
| zephyr_linker_section_configure( |
| SECTION .priv_stacks_noinit |
| SYMBOLS z_priv_stacks_ram_start |
| ) |
| |
| # During LINKER_KOBJECT_PREBUILT and LINKER_ZEPHYR_PREBUILT, |
| # space needs to be reserved for the rodata that will be |
| # produced by gperf during the final stages of linking. |
| # The alignment and size are produced by |
| # scripts/build/gen_kobject_placeholders.py. These are here |
| # so the addresses to kobjects would remain the same |
| # during the final stages of linking (LINKER_ZEPHYR_FINAL). |
| zephyr_linker_section_configure( |
| SECTION .priv_stacks_noinit |
| ALIGN @KOBJECT_PRIV_STACKS_ALIGN,undef:0@ |
| INPUT ".priv_stacks.noinit" |
| KEEP |
| PASS LINKER_ZEPHYR_PREBUILT LINKER_ZEPHYR_FINAL |
| SYMBOLS z_priv_stacks_ram_aligned_start z_priv_stacks_ram_end |
| ) |
| |
| if(KOBJECT_PRIV_STACKS_ALIGN) |
| zephyr_linker_symbol( |
| SYMBOL z_priv_stacks_ram_used |
| EXPR "(@z_priv_stacks_ram_end@ - @z_priv_stacks_ram_start@)" |
| PASS LINKER_ZEPHYR_FINAL |
| ) |
| endif() |
| endif() |
| endif() |