| /* |
| * Copyright (c) 2021-2022, Arm Limited. All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| * |
| */ |
| /***********{{utilities.donotedit_warning}}***********/ |
| |
| #ifndef __CONFIG_IMPL_H__ |
| #define __CONFIG_IMPL_H__ |
| |
| #include "config_tfm.h" |
| |
| /* Backends */ |
| #define {{"%-56s"|format("CONFIG_TFM_SPM_BACKEND_IPC")}} {{config_impl['CONFIG_TFM_SPM_BACKEND_IPC']}} |
| #define {{"%-56s"|format("CONFIG_TFM_SPM_BACKEND_SFN")}} {{config_impl['CONFIG_TFM_SPM_BACKEND_SFN']}} |
| |
| #define {{"%-56s"|format("CONFIG_TFM_CONNECTION_BASED_SERVICE_API")}} {{config_impl['CONFIG_TFM_CONNECTION_BASED_SERVICE_API']}} |
| #define {{"%-56s"|format("CONFIG_TFM_MMIO_REGION_ENABLE")}} {{config_impl['CONFIG_TFM_MMIO_REGION_ENABLE']}} |
| #define {{"%-56s"|format("CONFIG_TFM_FLIH_API")}} {{config_impl['CONFIG_TFM_FLIH_API']}} |
| #define {{"%-56s"|format("CONFIG_TFM_SLIH_API")}} {{config_impl['CONFIG_TFM_SLIH_API']}} |
| |
| #if CONFIG_TFM_SPM_BACKEND_IPC == 1 |
| /* Trustzone NS agent working stack size. */ |
| #if defined(TFM_FIH_PROFILE_ON) && TFM_ISOLATION_LEVEL == 1 |
| #define {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} 1256 |
| #else |
| #define {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} 1024 |
| #endif |
| |
| /* SPM re-uses Trustzone NS agent stack. */ |
| #define {{"%-56s"|format("CONFIG_TFM_SPM_THREAD_STACK_SIZE")}} \ |
| {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} |
| |
| #elif CONFIG_TFM_SPM_BACKEND_SFN == 1 |
| {% set total_stk = namespace(size="0") %} |
| {% for partition in partitions %} |
| {% set total_stk.size = total_stk.size + " + " + partition.manifest.stack_size %} |
| {% endfor %} |
| /* |
| * In isolation level 1 SFN model, all subsequent components work on NS agent |
| * stack. It is observed that half of the sum of all partition stack sizes is |
| * enough for working. Define a divisor factor |
| * CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR for reference, and allow |
| * modification of the factor based on application situation. The stack size |
| * value is aligned to 8 bytes. |
| * The minimum value is 0x400 to satisfy the SPM functional requirement. |
| * Manifest tool will assure this. |
| */ |
| #define {{"%-56s"|format("CONFIG_TFM_TOTAL_STACK_SIZE")}} ({{total_stk.size}}) |
| #if (CONFIG_TFM_TOTAL_STACK_SIZE < 2048) |
| #undef {{"%-56s"|format("CONFIG_TFM_TOTAL_STACK_SIZE")}} |
| #define {{"%-56s"|format("CONFIG_TFM_TOTAL_STACK_SIZE")}} 2048 |
| #endif |
| |
| #define CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR 1 |
| #define {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} \ |
| (((CONFIG_TFM_TOTAL_STACK_SIZE >> CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR) + 0x7) & (~0x7)) |
| |
| #endif /* CONFIG_TFM_SPM_BACKEND_IPC == 1 */ |
| |
| #endif /* __CONFIG_IMPL_H__ */ |