blob: 487bba592787e1188f3a3df508833ef3e2d73c4c [file] [log] [blame]
Marc Moreno Berengue20dab392017-11-29 13:18:58 +00001/*
Edison Aibb614aa2018-11-21 15:15:00 +08002 * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
Marc Moreno Berengue20dab392017-11-29 13:18:58 +00003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
Marc Moreno Berengueef202722018-08-10 13:43:43 +01008#ifndef __TFM_PLAT_DEFS_H__
9#define __TFM_PLAT_DEFS_H__
Marc Moreno Berengue20dab392017-11-29 13:18:58 +000010/**
11 * \note The interfaces defined in this file must be implemented for each
12 * target.
13 */
Marc Moreno Berengue20dab392017-11-29 13:18:58 +000014
15#include <stdint.h>
16#include <limits.h>
17
Marc Moreno Berengue9926df82018-08-10 13:45:52 +010018enum tfm_plat_err_t {
19 TFM_PLAT_ERR_SUCCESS = 0,
20 TFM_PLAT_ERR_SYSTEM_ERR,
Marc Moreno Berengue4cc81fc2018-08-10 14:32:01 +010021 TFM_PLAT_ERR_MAX_VALUE,
David Vincze2ff8c6a2019-05-21 11:53:00 +020022 TFM_PLAT_ERR_INVALID_INPUT,
23 TFM_PLAT_ERR_UNSUPPORTED,
Marc Moreno Berengue20dab392017-11-29 13:18:58 +000024 /* Following entry is only to ensure the error code of int size */
Marc Moreno Berengue9926df82018-08-10 13:45:52 +010025 TFM_PLAT_ERR_FORCE_INT_SIZE = INT_MAX
Marc Moreno Berengue20dab392017-11-29 13:18:58 +000026};
27
Edison Ai551cf972019-08-22 14:07:29 +080028#if defined(TFM_PSA_API) && defined(TFM_LVL) && (TFM_LVL != 1)
Edison Ai14dd1372019-07-11 18:02:18 +080029
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010030/*!
Mate Toth-Pal9aae21d2019-02-11 15:39:30 +010031 * \def TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010032 *
Mate Toth-Pal9aae21d2019-02-11 15:39:30 +010033 * \brief This macro provides a mechanism to place a function code or a data
34 * variable in the code section (e.g. RO) of a specific secure partition
Edison Ai14dd1372019-07-11 18:02:18 +080035 * at linker time.
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010036 *
37 * \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
Edison Aibb614aa2018-11-21 15:15:00 +080038 * file "name" field.
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010039 */
Mate Toth-Pal9aae21d2019-02-11 15:39:30 +010040#define TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
Marc Moreno Berengue8e0fa7a2018-10-04 18:25:13 +010041 __attribute__((section(TFM_PARTITION_NAME"_ATTR_FN")))
42
Mate Toth-Pal9aae21d2019-02-11 15:39:30 +010043/*!
44 * \def TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
45 *
46 * \brief This macro provides a mechanism to place data variables in the RW data
Edison Ai14dd1372019-07-11 18:02:18 +080047 * section of a specific secure partition at linker time.
Mate Toth-Pal9aae21d2019-02-11 15:39:30 +010048 *
49 * \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
50 * file "name" field.
51 */
52#define TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
53 __attribute__((section(TFM_PARTITION_NAME"_ATTR_RW")))
54
55/*!
56 * \def TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
57 *
58 * \brief This macro provides a mechanism to place data variables in the ZI data
Edison Ai14dd1372019-07-11 18:02:18 +080059 * section of a specific secure partition at linker time.
Mate Toth-Pal9aae21d2019-02-11 15:39:30 +010060 *
61 * \param[in] TFM_PARTITION_NAME TF-M partition name assigned in the manifest
62 * file "name" field.
63 */
64#define TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME) \
65 __attribute__((section(TFM_PARTITION_NAME"_ATTR_ZI")))
66#else
67#define TFM_LINK_SET_RO_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
68#define TFM_LINK_SET_RW_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
69#define TFM_LINK_SET_ZI_IN_PARTITION_SECTION(TFM_PARTITION_NAME)
70#endif
Marc Moreno Berengueef202722018-08-10 13:43:43 +010071#endif /* __TFM_PLAT_DEFS_H__ */