blob: 85b2cbad1e252a95bd580b1ebb884e66971cb6a3 [file] [log] [blame]
Mingyang Suneab7eae2021-09-30 13:06:52 +08001/*
Xinyu Zhang90f08dc2022-01-12 15:55:17 +08002 * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
Mingyang Suneab7eae2021-09-30 13:06:52 +08003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
Sherry Zhangf58f2bd2022-01-10 17:21:11 +08007/***********{{utilities.donotedit_warning}}***********/
Mingyang Suneab7eae2021-09-30 13:06:52 +08008
9#ifndef __CONFIG_IMPL_H__
10#define __CONFIG_IMPL_H__
11
Kevin Peng9f1a7542022-02-07 16:32:27 +080012/* Backends */
13#define {{"%-56s"|format("CONFIG_TFM_SPM_BACKEND_IPC")}} {{config_impl['CONFIG_TFM_SPM_BACKEND_IPC']}}
14#define {{"%-56s"|format("CONFIG_TFM_SPM_BACKEND_SFN")}} {{config_impl['CONFIG_TFM_SPM_BACKEND_SFN']}}
15
16/* API calls */
17#define {{"%-56s"|format("CONFIG_TFM_PSA_API_SFN_CALL")}} {{config_impl['CONFIG_TFM_PSA_API_SFN_CALL']}}
18#define {{"%-56s"|format("CONFIG_TFM_PSA_API_CROSS_CALL")}} {{config_impl['CONFIG_TFM_PSA_API_CROSS_CALL']}}
19#define {{"%-56s"|format("CONFIG_TFM_PSA_API_SUPERVISOR_CALL")}} {{config_impl['CONFIG_TFM_PSA_API_SUPERVISOR_CALL']}}
20
21#define {{"%-56s"|format("CONFIG_TFM_CONNECTION_BASED_SERVICE_API")}} {{config_impl['CONFIG_TFM_CONNECTION_BASED_SERVICE_API']}}
22
23#if CONFIG_TFM_SPM_BACKEND_IPC == 1
Mingyang Sunc2521f72021-08-13 15:03:05 +080024/* Trustzone NS agent working stack size. */
25#define {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} 1024
26
Mingyang Sunc2521f72021-08-13 15:03:05 +080027/* SPM re-uses Trustzone NS agent stack. */
28#define {{"%-56s"|format("CONFIG_TFM_SPM_THREAD_STACK_SIZE")}} \
29 {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}}
Ken Liu82e3eac2021-10-14 16:19:13 +080030
Kevin Peng9f1a7542022-02-07 16:32:27 +080031#elif CONFIG_TFM_SPM_BACKEND_SFN == 1
Mingyang Sunc9a96c02021-10-14 10:32:05 +080032 {% set total_stk = namespace(size=0) %}
33 {% for partition in partitions %}
34 {% if "0x" in partition.manifest.stack_size or "0X" in partition.manifest.stack_size %}
35 {% set total_stk.size = total_stk.size + partition.manifest.stack_size|int(base=16) %}
36 {% else %}
37 {% set total_stk.size = total_stk.size + partition.manifest.stack_size|int(base=10) %}
38 {% endif %}
39 {% endfor %}
Mingyang Sunc2521f72021-08-13 15:03:05 +080040/*
41 * In isolation level 1 SFN model, all subsequent components work on NS agent
42 * stack. It is observed that half of the sum of all partition stack sizes is
43 * enough for working. Define a divisor factor
44 * CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR for reference, and allow
45 * modification of the factor based on application situation. The stack size
46 * value is aligned to 8 bytes.
Ken Liuf39d8eb2021-10-07 12:55:33 +080047 * The minimum value is 0x400 to satisfy the SPM functional requirement.
48 * Manifest tool will assure this.
Mingyang Sunc2521f72021-08-13 15:03:05 +080049 */
Ken Liuf39d8eb2021-10-07 12:55:33 +080050 {% if total_stk.size|int < 2048 %}
51 {% set total_stk.size = 2048 %}
52 {% endif %}
Mingyang Sunc2521f72021-08-13 15:03:05 +080053#define CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR 1
Ken Liuf39d8eb2021-10-07 12:55:33 +080054#define {{"%-56s"|format("CONFIG_TFM_NS_AGENT_TZ_STACK_SIZE")}} \
Mingyang Sunc2521f72021-08-13 15:03:05 +080055 ((({{"0x%x"|format(total_stk.size)}} >> CONFIG_TFM_NS_AGENT_TZ_STK_SIZE_SHIFT_FACTOR) + 0x7) & (~0x7))
Mingyang Sunc9a96c02021-10-14 10:32:05 +080056
Kevin Peng9f1a7542022-02-07 16:32:27 +080057#endif /* CONFIG_TFM_SPM_BACKEND_IPC == 1 */
Feder Liangb7140792021-11-25 16:07:16 +080058
Feder Liang55194382021-11-22 16:45:33 +080059#if (CONFIG_TFM_FP > 0) && (CONFIG_TFM_SPM_BACKEND_SFN == 1)
60#error "FP is not supported for SFN model."
61#endif
62
Mingyang Suneab7eae2021-09-30 13:06:52 +080063#endif /* __CONFIG_IMPL_H__ */