mbed-os5 only for TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
Parent:
0:5b88d5760320
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /*
kenjiArai 0:5b88d5760320 2 * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
kenjiArai 0:5b88d5760320 3 *
kenjiArai 0:5b88d5760320 4 * SPDX-License-Identifier: BSD-3-Clause
kenjiArai 0:5b88d5760320 5 *
kenjiArai 0:5b88d5760320 6 */
kenjiArai 0:5b88d5760320 7
kenjiArai 0:5b88d5760320 8 #ifndef __SPM_DB_H__
kenjiArai 0:5b88d5760320 9 #define __SPM_DB_H__
kenjiArai 0:5b88d5760320 10
kenjiArai 0:5b88d5760320 11
kenjiArai 0:5b88d5760320 12 #ifdef TFM_PSA_API
kenjiArai 0:5b88d5760320 13 #include "tfm_thread.h"
kenjiArai 0:5b88d5760320 14 #endif
kenjiArai 0:5b88d5760320 15
kenjiArai 0:5b88d5760320 16 struct spm_partition_desc_t;
kenjiArai 0:5b88d5760320 17 struct spm_partition_db_t;
kenjiArai 0:5b88d5760320 18
kenjiArai 0:5b88d5760320 19 typedef psa_status_t(*sp_init_function)(void);
kenjiArai 0:5b88d5760320 20
kenjiArai 0:5b88d5760320 21 #define TFM_PARTITION_TYPE_APP "APPLICATION-ROT"
kenjiArai 0:5b88d5760320 22 #define TFM_PARTITION_TYPE_PSA "PSA-ROT"
kenjiArai 0:5b88d5760320 23
kenjiArai 0:5b88d5760320 24 #ifdef TFM_PSA_API
kenjiArai 0:5b88d5760320 25 enum tfm_partition_priority {
kenjiArai 0:5b88d5760320 26 TFM_PRIORITY_LOW = THRD_PRIOR_LOWEST,
kenjiArai 0:5b88d5760320 27 TFM_PRIORITY_NORMAL = THRD_PRIOR_MEDIUM,
kenjiArai 0:5b88d5760320 28 TFM_PRIORITY_HIGH = THRD_PRIOR_HIGHEST,
kenjiArai 0:5b88d5760320 29 };
kenjiArai 0:5b88d5760320 30 #else
kenjiArai 0:5b88d5760320 31 enum tfm_partition_priority {
kenjiArai 0:5b88d5760320 32 TFM_PRIORITY_LOW = 0xFF,
kenjiArai 0:5b88d5760320 33 TFM_PRIORITY_NORMAL = 0x7F,
kenjiArai 0:5b88d5760320 34 TFM_PRIORITY_HIGH = 0,
kenjiArai 0:5b88d5760320 35 };
kenjiArai 0:5b88d5760320 36 #endif
kenjiArai 0:5b88d5760320 37
kenjiArai 0:5b88d5760320 38 #define TFM_PRIORITY(LEVEL) TFM_PRIORITY_##LEVEL
kenjiArai 0:5b88d5760320 39
kenjiArai 0:5b88d5760320 40 /**
kenjiArai 0:5b88d5760320 41 * Holds the fields of the partition DB used by the SPM code. The values of
kenjiArai 0:5b88d5760320 42 * these fields are calculated at compile time, and set during initialisation
kenjiArai 0:5b88d5760320 43 * phase.
kenjiArai 0:5b88d5760320 44 */
kenjiArai 0:5b88d5760320 45 struct spm_partition_static_data_t {
kenjiArai 0:5b88d5760320 46 uint32_t partition_id;
kenjiArai 0:5b88d5760320 47 uint32_t partition_flags;
kenjiArai 0:5b88d5760320 48 uint32_t partition_priority;
kenjiArai 0:5b88d5760320 49 sp_init_function partition_init;
kenjiArai 0:5b88d5760320 50 };
kenjiArai 0:5b88d5760320 51
kenjiArai 0:5b88d5760320 52 /**
kenjiArai 0:5b88d5760320 53 * Holds the fields that define a partition for SPM. The fields are further
kenjiArai 0:5b88d5760320 54 * divided to structures, to keep the related fields close to each other.
kenjiArai 0:5b88d5760320 55 */
kenjiArai 0:5b88d5760320 56 struct spm_partition_desc_t {
kenjiArai 0:5b88d5760320 57 struct spm_partition_static_data_t static_data;
kenjiArai 0:5b88d5760320 58 struct spm_partition_runtime_data_t runtime_data;
kenjiArai 0:5b88d5760320 59 struct tfm_spm_partition_platform_data_t *platform_data;
kenjiArai 0:5b88d5760320 60 #if (TFM_LVL != 1) || defined(TFM_PSA_API)
kenjiArai 0:5b88d5760320 61 struct tfm_spm_partition_memory_data_t memory_data;
kenjiArai 0:5b88d5760320 62 #endif
kenjiArai 0:5b88d5760320 63 #ifdef TFM_PSA_API
kenjiArai 0:5b88d5760320 64 struct tfm_thrd_ctx sp_thrd;
kenjiArai 0:5b88d5760320 65 #endif
kenjiArai 0:5b88d5760320 66 };
kenjiArai 0:5b88d5760320 67
kenjiArai 0:5b88d5760320 68 /* Macros to pick linker symbols and allow to form the partition data base */
kenjiArai 0:5b88d5760320 69 #define REGION(a, b, c) a##b##c
kenjiArai 0:5b88d5760320 70 #define REGION_NAME(a, b, c) REGION(a, b, c)
kenjiArai 0:5b88d5760320 71 /* Changed from #if (TFM_LVL == 1) && !defined(TFM_PSA_API) to #if (TFM_LVL == 1) to avoid linker error.
kenjiArai 0:5b88d5760320 72 TF-M build autogenerates region details (code, ro, rw, zi and stack ) using linker scripts. We do not
kenjiArai 0:5b88d5760320 73 hve that in mbed-os build yet.
kenjiArai 0:5b88d5760320 74 */
kenjiArai 0:5b88d5760320 75 #if (TFM_LVL == 1)
kenjiArai 0:5b88d5760320 76 #define REGION_DECLARE(a, b, c)
kenjiArai 0:5b88d5760320 77 #else
kenjiArai 0:5b88d5760320 78 #define REGION_DECLARE(a, b, c) extern uint32_t REGION_NAME(a, b, c)
kenjiArai 0:5b88d5760320 79 #define PART_REGION_ADDR(partition, region) \
kenjiArai 0:5b88d5760320 80 (uint32_t)&REGION_NAME(Image$$, partition, region)
kenjiArai 0:5b88d5760320 81 #endif
kenjiArai 0:5b88d5760320 82
kenjiArai 0:5b88d5760320 83 #endif /* __SPM_DB_H__ */